{"id":349145,"name":"Pyregence","description":"A web portal for displaying near-term fire forecast results for the state of California.","url":"https://github.com/pyregence/pyregence","last_synced_at":"2026-04-20T02:30:22.434Z","repository":{"id":177041835,"uuid":"246585515","full_name":"pyregence/pyregence","owner":"pyregence","description":"The main web portal for the Pyregence project.","archived":false,"fork":false,"pushed_at":"2026-04-15T19:30:01.000Z","size":21676,"stargazers_count":6,"open_issues_count":5,"forks_count":0,"subscribers_count":3,"default_branch":"main","last_synced_at":"2026-04-16T01:02:30.003Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://pyrecast.org","language":"Clojure","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"epl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pyregence.png","metadata":{"files":{"readme":"README.org","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2020-03-11T13:56:31.000Z","updated_at":"2026-04-09T15:10:38.000Z","dependencies_parsed_at":"2023-09-30T02:18:52.080Z","dependency_job_id":"c35fd427-288d-4da6-b689-e932d2531521","html_url":"https://github.com/pyregence/pyregence","commit_stats":null,"previous_names":["pyregence/pyregence"],"tags_count":31,"template":false,"template_full_name":null,"purl":"pkg:github/pyregence/pyregence","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyregence%2Fpyregence","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyregence%2Fpyregence/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyregence%2Fpyregence/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyregence%2Fpyregence/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pyregence","download_url":"https://codeload.github.com/pyregence/pyregence/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyregence%2Fpyregence/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31991720,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-18T20:23:30.271Z","status":"online","status_checked_at":"2026-04-19T02:00:07.110Z","response_time":55,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"owner":{"login":"pyregence","name":"pyregence.org","uuid":"61761393","kind":"organization","description":"EPIC: Open Fire Modeling Environment","email":"dssaah@usfca.edu","website":"https://pyregence.org","location":"San Francisco, CA USA","twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/61761393?v=4","repositories_count":1,"last_synced_at":"2023-06-28T20:27:20.472Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/pyregence","funding_links":[],"total_stars":null,"followers":null,"following":null,"created_at":"2023-06-28T20:27:20.481Z","updated_at":"2023-06-28T20:27:20.481Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pyregence","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pyregence/repositories"},"packages":[],"commits":{"id":11690422,"full_name":"pyregence/pyregence","default_branch":"master","total_commits":1688,"total_committers":15,"total_bot_commits":0,"total_bot_committers":0,"mean_commits":112.53333333333333,"dds":0.6664691943127963,"past_year_total_commits":133,"past_year_total_committers":7,"past_year_total_bot_commits":0,"past_year_total_bot_committers":0,"past_year_mean_commits":19.0,"past_year_dds":0.6015037593984962,"last_synced_at":"2026-04-16T03:09:47.292Z","last_synced_commit":"833699f05375385a10f944f4f5c3856e1fffeb3a","created_at":"2026-03-21T12:54:03.552Z","updated_at":"2026-04-16T03:08:54.121Z","committers":[{"name":"Oliver-BE","email":"obaldwinedwards@gmail.com","login":"Oliver-BE","count":563},{"name":"Matt Spencer","email":"sirmspencer@gmail.com","login":"sirmspencer","count":548},{"name":"RJ Sheperd","email":"rjsheperd@gmail.com","login":"rjsheperd","count":209},{"name":"Joel Iniguez","email":"joel.iniguez@gmail.com","login":null,"count":106},{"name":"drew verlee","email":"drew.verlee@gmail.com","login":"drewverlee","count":72},{"name":"Gary Johnson","email":"lambdatronic@gmail.com","login":"lambdatronic","count":65},{"name":"Daniel Keenan","email":"hatchbackcreative@gmail.com","login":"hatchbackcreative","count":60},{"name":"Daniel Habib Vieira da Silva","email":"danielhvs70@gmail.com","login":"danielhvs","count":26},{"name":"Sif","email":"sbiri@sig-gis.com","login":"sifbiri","count":21},{"name":"Daniel Silva","email":"dsilva@sig-gis.com","login":null,"count":6},{"name":"Arthur G Luz","email":"aluz@sig-gis.com","login":"a-luz","count":5},{"name":"Andrew Carlile","email":"43738264+jollyblondgiant","login":"jollyblondgiant","count":2},{"name":"Josh Clark","email":"jclark754@gmail.com","login":null,"count":2},{"name":"Gary Johnson","email":"lambdatronic@disroot.org","login":null,"count":2},{"name":"David S Saah","email":"dsaah@sig-gis.com","login":"davidsaah","count":1}],"past_year_committers":[{"name":"drew verlee","email":"drew.verlee@gmail.com","login":"drewverlee","count":53},{"name":"Oliver Baldwin Edwards","email":"obaldwinedwards@gmail.com","login":"Oliver-BE","count":36},{"name":"Sif","email":"sbiri@sig-gis.com","login":"sifbiri","count":18},{"name":"Daniel Habib Vieira da Silva","email":"danielhvs70@gmail.com","login":"danielhvs","count":17},{"name":"Arthur G Luz","email":"aluz@sig-gis.com","login":"a-luz","count":5},{"name":"Andrew Carlile","email":"43738264+jollyblondgiant","login":"jollyblondgiant","count":2},{"name":"Gary Johnson","email":"lambdatronic@disroot.org","login":null,"count":2}],"commits_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyregence%2Fpyregence/commits","host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-04-19T00:00:13.908Z","repositories_count":6214336,"commits_count":900156473,"contributors_count":34917714,"owners_count":1143688,"icon_url":"https://github.com/github.png","host_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories"}},"issues_stats":{"full_name":"pyregence/pyregence","html_url":"https://github.com/pyregence/pyregence","last_synced_at":"2026-04-16T01:00:48.876Z","status":"active","issues_count":2,"pull_requests_count":94,"avg_time_to_close_issue":593540.0,"avg_time_to_close_pull_request":264574.3,"issues_closed_count":2,"pull_requests_closed_count":60,"pull_request_authors_count":6,"issue_authors_count":1,"avg_comments_per_issue":2.0,"avg_comments_per_pull_request":0.6914893617021277,"merged_pull_requests_count":53,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":0,"past_year_pull_requests_count":35,"past_year_avg_time_to_close_issue":null,"past_year_avg_time_to_close_pull_request":350548.875,"past_year_issues_closed_count":0,"past_year_pull_requests_closed_count":16,"past_year_pull_request_authors_count":6,"past_year_issue_authors_count":0,"past_year_avg_comments_per_issue":null,"past_year_avg_comments_per_pull_request":0.7714285714285715,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":14,"created_at":"2025-08-29T11:49:55.542Z","updated_at":"2026-04-16T01:00:48.877Z","repository_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyregence%2Fpyregence","issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyregence%2Fpyregence/issues","issue_labels_count":{},"pull_request_labels_count":{},"issue_author_associations_count":{"CONTRIBUTOR":2},"pull_request_author_associations_count":{"CONTRIBUTOR":43,"COLLABORATOR":42,"MEMBER":7,"NONE":2},"issue_authors":{"drewverlee":2},"pull_request_authors":{"Oliver-BE":35,"drewverlee":32,"danielhvs":13,"sifbiri":12,"lambdatronic":1,"Dolpheus89":1},"host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-04-19T00:00:13.985Z","repositories_count":14316419,"issues_count":34516828,"pull_requests_count":112948048,"authors_count":11238205,"icon_url":"https://github.com/github.png","host_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories","owners_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/owners","authors_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors"},"past_year_issue_labels_count":{},"past_year_pull_request_labels_count":{},"past_year_issue_author_associations_count":{},"past_year_pull_request_author_associations_count":{"CONTRIBUTOR":18,"COLLABORATOR":10,"MEMBER":7},"past_year_issue_authors":{},"past_year_pull_request_authors":{"Oliver-BE":11,"sifbiri":9,"drewverlee":8,"danielhvs":5,"Dolpheus89":1,"lambdatronic":1},"maintainers":[{"login":"Oliver-BE","count":35,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/Oliver-BE"},{"login":"danielhvs","count":13,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/danielhvs"},{"login":"Dolpheus89","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/Dolpheus89"}],"active_maintainers":[{"login":"Oliver-BE","count":11,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/Oliver-BE"},{"login":"danielhvs","count":5,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/danielhvs"},{"login":"Dolpheus89","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/Dolpheus89"}]},"events":{"total":{"CreateEvent":152,"CommitCommentEvent":1,"ReleaseEvent":7,"DeleteEvent":121,"PullRequestEvent":155,"ForkEvent":1,"IssuesEvent":2,"WatchEvent":5,"IssueCommentEvent":148,"PushEvent":654,"PullRequestReviewCommentEvent":146,"PullRequestReviewEvent":147},"last_year":{"CreateEvent":91,"CommitCommentEvent":1,"ReleaseEvent":7,"DeleteEvent":73,"PullRequestEvent":71,"WatchEvent":3,"IssueCommentEvent":78,"PushEvent":413,"PullRequestReviewEvent":98,"PullRequestReviewCommentEvent":100}},"keywords":[],"dependencies":[],"score":5.105945473900581,"created_at":"2026-03-21T12:54:04.300Z","updated_at":"2026-04-20T02:30:22.441Z","avatar_url":"https://github.com/pyregence.png","language":"Clojure","category":"Biosphere","sub_category":"Wildfire","monthly_downloads":0,"total_dependent_repos":0,"total_dependent_packages":0,"readme":"* Pyregence\n\nPyregence is a web portal for displaying near-term fire forecast\nresults for the state of California. The fire spread and impact maps\nare generated by running multiple state-of-the-art simulation models\non a continuously updated stream of weather data.\n\nAt this time, Pyregence displays results from these open-source fire\nbehavior models:\n\n1. [[https://github.com/lautenberger/elmfire][ELMFIRE]]\n2. [[https://github.com/pyregence/gridfire][GridFire]]\n\n** Installation\n\nTo run PyreCast locally you will need a JDK ([[https://openjdk.org/projects/jdk/21/][OpenJDK-21]]),\nClojure ([[https://clojure.org/guides/install_clojure][cli-1.11.*]]), [[https://github.com/babashka/babashka#installation][babashka]],\nNPM ([[https://nodejs.org/en/download][node-22]]), and PostgresSQL ([[https://www.postgresql.org/download][13]]).\nYou can install these packages globally on your system or, assuming you have\n[[https://guix.gnu.org/][guix]] installed, by running [[./pyregence-shell.sh][pyregence-shell.sh]]\nwhich creates a container shell with all of the necessary packages installed into it.\nFor the current package list see [[./manifest.scm][manifest.scm]].\n\n** Application Configuration\n\nOn startup, the Pyregence application reads a file called ~config.edn~\nin the top-level directory of this repository, which contains various\nuser-configurable system parameters. A sample file called\n~config.default.edn~ is provided with this repository to get you\nstarted. To begin, simply rename (or copy) it to ~config.edn~. Then edit\nit according to the following sections.\n\nPlease note that you must replace all values surrounded with angle\nbrackets (e.g., \"\u003capi-key\u003e\") with actual values for the application to\nwork correctly. The Mapbox ~:access-token~ field requires a\n[[https://docs.mapbox.com/help/getting-started/access-tokens/][Mapbox access token]].\nThe ~:wildfire-camera-api-key~ field requires an API key for the\n[[https://www.alertwildfire.org/][AlertWildfire]] API. You should change the\n~:pyr-auth-token~ field to a unique string that's at least 16 characters long.\n\n** PostgreSQL Database Setup\n\n*PostgreSQL* needs to be installed on the machine that will be hosting\nthe Pyregence website. Once the PostgreSQL database server is running\non your machine, you should navigate to the top-level directory and run\nthe database build command as follows:\n\n#+begin_src sh\nclojure -M:build-db build-all [--dev-data]\n#+end_src\n\nThis will begin by creating a new database and role called *pyregence*\nand then add the pgcrypto and postgis extensions to it. Next, the\nscript will populate the database with the schemas, tables, and\nfunctions that are necessary for storing and processing Pyregence's\ndata. Finally, it will load some default data into these tables that\nis necessary for the website to function properly. You can optionally load\ndev data with ~--dev-data~. This will initialize the DB with 2 users and a\n\"Development\" organization.\n\n*** Performance Settings\n\nIf you want to improve the performance of your PostgreSQL server, one\nway is to visit the [[https://pgtune.leopard.in.ua/][pgtune]] website\nand input your system settings. This will generate a set of configuration\noptions that you can add to the ~postgresql.conf~ file in your system-specific\nPostgreSQL data directory.\n\nIf you would like to keep these settings separate for your own\nreference, you can add them to a file called \"performance.conf\" that\nyou should place in your PostgreSQL data directory. You can then\nimport these settings into ~postgresql.conf~ by adding this line to the\nend of that file:\n\n#+begin_example\ninclude = 'performance.conf'\n#+end_example\n\nNote that the PostgreSQL server will need to be restarted for these\nchanges to take effect.\n\n** Environment Variable Setup\n\nIn order for your command-line shell to find the programs installed\nabove, you will need to update your environment variables. Under\nGNU/Linux, *BSD, or MacOS X, you can set these through your shell's\n.*rc or .*profile configuration files in your $HOME directory. In a\nWindows environment, you will need to set either the USER (for the\ncurrent user only) or SYSTEM (for any user) environment variables\nunder your system settings menu.\n\n*** Step 1: Add JAVA_HOME\n\nOn a Unix machine using bash (e.g., GNU/Linux or MacOS X):\n\n#+begin_src sh\nexport JAVA_HOME=\u003cjdk-installation-directory\u003e\n#+end_src\n\nOn a Unix machine using csh or tcsh (e.g., *BSD):\n\n#+begin_src sh\nsetenv JAVA_HOME \u003cjdk-installation-directory\u003e\n#+end_src\n\nOn a Windows machine:\n\n#+begin_example\nJAVA_HOME = C:\\Program Files\\Java\\jdk-X.X.X\n#+end_example\n\nReplace *X.X.X* with the JDK version installed on your computer.\n\n*** Step 2: Update PATH\n\nOn a Unix machine using bash (e.g., GNU/Linux or MacOS X):\n\n#+begin_src sh\nexport PATH=$PATH:$JAVA_HOME/bin\n#+end_src\n\nOn a Unix machine using csh or tcsh (e.g., *BSD):\n\n#+begin_src sh\nsetenv PATH $PATH\\:$JAVA_HOME/bin\n#+end_src\n\nOn a Windows machine, add these entries to the PATH environment\nvariable:\n\n#+begin_example\n%JAVA_HOME%\\bin\nC:\\Program Files\\PostgreSQL\\X\\lib\nC:\\Program Files\\PostgreSQL\\X\\bin\n#+end_example\n\nReplace *X* with the PostgreSQL version installed on your computer.\n\n** Development Web Server\n\n*** Modifying hosts file\n\nAdd the following line to your hosts file. This local URL should be used for\nlocal developing in place of ~localhost~ due to CORS settings on the GeoServer\ninstances used in Pyrecast.\n\n#+begin_example\n127.0.0.1 local.pyrecast.org\n#+end_example\n\n*** Updating Chrome HSTS Settings\n\nIf you are planning on doing your local development on Chrome, you'll need to\nupdate your HSTS (HTTP Strict Transport Security) settings so that trying to\nhit ~http://local.pyrecast.org~ doesn't automatically redirect to\n~https://local.pyrecast.org~. To do so, open chrome://net-internals/#hsts in your\nChrome browser and scroll down to the \"Delete domain security policies\" section.\nEnter ~local.pyrecast.org~ in the box and click \"Delete\". You should now be all\nset to hit ~http://local.pyrecast.org~. If you're still running into issues,\ntry clearing your Chrome browser cache (visit chrome://settings/privacy and\nclick \"Clear browsing data\").\n\n*** Launching Figwheel\n\nTo start the Figwheel server, navigate to the top-level project\ndirectory and run:\n\n#+begin_src sh\nclojure -M:default-ssl-opts:figwheel\n#+end_src\n\nThis will start a web server on ~http://local.pyrecast.org:8080~ (also\naccessible from ~http://localhost:8080~), which serves up the website in\ndev mode. Any changes to CLJS files will be automatically pushed to\nthe browser when the files are saved. Any changes to CLJ files will be\npushed to the running server process. A CLJS browser REPL will also be\nlaunched at the terminal for you to interactively develop your\nclient-side code.\n\n*** Checking for Reflection Warnings\n\nFrom the top-level project directory run:\n\n#+begin_src sh\nclojure -M:check-reflection\n#+end_src\n\nThis will emit warnings when reflection is needed to resolve Java\nmethod calls or field accesses. To resolve any that appear, add\n[[https://clojure.org/reference/java_interop#typehints][type hints]] to your code. Resolving all reflection warnings can improve\nsystem performance.\n\n*** Debugging Your Dev Environment\n\nIf your dev environment isn't working properly, refer to the following\nlist of things to double-check:\n\n1. Make sure you have all of the required installation requirements listed above. For example, calling ~java --version~ should yield:\n\n#+begin_src\nopenjdk 17.0.3 2022-04-19\nOpenJDK Runtime Environment (build 17.0.3+7-Ubuntu-0ubuntu0.20.04.1)\nOpenJDK 64-Bit Server VM (build 17.0.3+7-Ubuntu-0ubuntu0.20.04.1, mixed mode, sharing)\n#+end_src\n\n2. Make sure your ~config.edn~ file has every field from ~config.default.edn~ and you've correctly updated the fields that need updating (e.g. the access tokens are correct).\n\n3. Make sure your local database is working properly. To get a fresh database (with the development data) run:\n\n#+begin_src sh\nclojure -M:build-db functions\nclojure -M:build-db build-all --dev-data\n#+end_src\n\n4. Make sure your ~/etc/hosts~ file has a line for ~127.0.0.1 local.pyrecast.org~ and that you're hitting ~http://local.pyrecast.org:8080~ (make sure the port matches up to whatever you've set in ~config.edn~) in your web browser.\n\nIf none of the above fix your problem, you should look at your Figwheel\nconsole and web browser dev tools console after running ~clojure -M:default-ssl-opts:figwheel~\nfor more information.\n\n** Production Web Server\n\n*** Installation Requirements\n\n- [[https://certbot.eff.org/][certbot]]\n- [[https://www.openssl.org/source/][openssl]]\n\n*** Enabling HTTPS\n\nView the [[https://github.com/sig-gis/triangulum#triangulumhttps][Triangulum HTTPS]]\npage for further instructions on enabling HTTPS.\n\n*** Compiling ClojureScript to JavaScript\n\nTo compile the ClojureScript files under src/cljs to JavaScript under\n`target/public/cljs`, navigate to the top-level project directory and\nrun:\n\n#+begin_src sh\nclojure -M:compile-cljs\n#+end_src\n\nThe main JavaScript entry point file will be written to\n`target/public/cljs/app.js`. The ClojureScript compiler options are read\nfrom the top-level `compile-prod.cljs.edn` file.\n\n*** Launching the Web Server\n\nTo compile and run the web application, navigate to the top-level\nproject directory and run:\n\n#+begin_src sh\nclojure -M:build-db functions\nclojure -M:default-ssl-opts:server start -m [dev|prod] [-p 8080] [-P 8443] [-r/--repl]\n#+end_src\n\nThe website will then be available at ~http://localhost:8080~ unless a\nport is specified. An http port can be specified with -p and an https\nport can be specified with -P. In dev mode, server-side exceptions\nwill be displayed in the browser and Clojure source files will be\nreloaded whenever you refresh the page. These features are disabled in\nprod mode. If -m is unspecified, it will default to prod mode.\n\nIf the ~-r/--repl~ flag is provided, then a repl server will start on port 5555.\nThis can be connected to for debugging or managing the server.\n\nThe server is also configurable using the ~config.edn~ file:\n#+begin_src clojure\n;; config.edn\n{:server {:http-port  8080\n          :https-port 8443\n          :mode       \"\u003cprod/dev\u003e\"\n          :log-dir    \"logs\"\n          :repl       \u003ctrue/false\u003e}}\n#+end_src\n\nIf you don't already have an SSL certificate, you cannot specify an\nhttps port.\n\n*** Running the Web Server as a System Service\n\nView the [[https://github.com/sig-gis/triangulum#triangulumsystemd][Triangulum Systemd]]\npage for further instructions on enabling the app as a system service.\n\n*** Maintaining Daily Logs\n\nBy default the server will log to standard out. If you would like to\nhave the system log to ~YYYY-DD-MM.log~, use the `-o path` option to\nspecify an output path. You can either specify a path relative to\nthe top-level directory of this repository or an absolute path on\nyour filesystem. The logger will keep the 10 most recent logs.\n\n*** Running https via nginx (optional)\n\n**** Install required packages\n\n- [[https://nginx.org/en/][nginx]]\n\n**** Copy the nginx template and update\n\nUbuntu example:\n\n#+begin_src sh\nsudo cp nginx/nginx-template.conf /etc/nginx/sites-available/pyregence.conf\nsudo ln -s /etc/nginx/sites-available/pyregence.conf /etc/nginx/sites-enabled/\nsudo nano /etc/nginx/sites-available/pyregence.conf\nsudo service nginx restart\n#+end_src\n\n**** Alternative server deployment\n\nWhen using nginx, run the server in http mode only. If multiple servers are\nrunning on the same VM, be sure to assign them different ports. Remember that\nnginx needs port 8080, which is the default port for the server deployment.\nInstead deploy with a non default port:\n\n#+begin_src sh\nclojure -M:run-server -p 8081\n#+end_src\n\nFor HTTPS, each server does not need its own deploy hook. Instead nginx needs\na single deploy hook:\n\n#+begin_src sh\nsudo nano /etc/letsencrypt/renewal-hooks/deploy/nginx.sh\n#+end_src\n\nAdd ~systemctl reload nginx~ to the file and save.\n\n#+begin_src sh\nsudo chmod +x /etc/letsencrypt/renewal-hooks/deploy/nginx.sh\n#+end_src\n\n**** Diagnose errors with nginx by looking in the log\n\nUbuntu example:\n\n#+begin_src sh\nsudo less +G /var/log/nginx/error.log\n#+end_src\n\n*** JAR\n\nTo build a JAR run:\n\n#+begin_src sh\nclj -X:build-uberjar\n#+end_src\n\nOr if you have Guix installed, run:\n\n#+begin_src sh\n./pyregence-shell.sh -- clojure -X:build-uberjar\n#+end_src\n\nThis will produce a uberJAR located at  target/pyregence-\u003cdate\u003e-\u003ccommit\u003e-standalone.jar which depends only\non a config.edn, java and psql. The JAR's cli actions are available through ~java -jar~:\n\n#+begin_src sh :results raw\njava -jar target/pyregence-*\n#+end_src\n\nThe current notable actions are [[https://github.com/sig-gis/triangulum?tab=readme-ov-file#triangulumserver][running the server]] and the [[https://github.com/sig-gis/triangulum?tab=readme-ov-file#triangulumbuild-db][building the database]].\n\n** Vulerability checking\nTo check for vulerabilities in this project, use ~clojure -M:clj-watson scan -p deps-for-clj-watson.edn -s~\n\n** Other Documentation\n\n- [[file:docs/pyrecast-architecture.md][Pyrecast Architecture]]\n- [[file:docs/pyrecast-back-end.md][Pyrecast Back-End]]\n\n** License and Distribution\n\nCopyright © 2020-2026 Spatial Informatics Group, LLC.\n\nPyregence is distributed by Spatial Informatics Group, LLC. under the\nterms of the Eclipse Public License version 2.0 (EPLv2). See\n~LICENSE.txt~ in this directory for more information.\n","funding_links":[],"readme_doi_urls":[],"works":{},"citation_counts":{},"total_citations":0,"keywords_from_contributors":[],"project_url":"https://ost.ecosyste.ms/api/v1/projects/349145","html_url":"https://ost.ecosyste.ms/projects/349145"}