{"id":51310573,"url":"https://github.com/dwyl/gogs-server","last_synced_at":"2026-07-01T03:32:26.353Z","repository":{"id":40409120,"uuid":"484183980","full_name":"dwyl/gogs-server","owner":"dwyl","description":"⚙️ CI/CD Pipeline + Docs for our Gogs Server on Fly.io","archived":false,"fork":false,"pushed_at":"2022-05-10T11:55:41.000Z","size":39,"stargazers_count":4,"open_issues_count":2,"forks_count":0,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-03-30T10:35:05.323Z","etag":null,"topics":["backup","deployment","git","gogs"],"latest_commit_sha":null,"homepage":"https://gogs-server.fly.dev/","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dwyl.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2022-04-21T19:44:52.000Z","updated_at":"2025-01-29T22:38:08.000Z","dependencies_parsed_at":"2022-08-09T19:31:23.609Z","dependency_job_id":null,"html_url":"https://github.com/dwyl/gogs-server","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/dwyl/gogs-server","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dwyl%2Fgogs-server","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dwyl%2Fgogs-server/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dwyl%2Fgogs-server/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dwyl%2Fgogs-server/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dwyl","download_url":"https://codeload.github.com/dwyl/gogs-server/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dwyl%2Fgogs-server/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34992071,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-01T02:00:05.325Z","response_time":130,"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"}},"keywords":["backup","deployment","git","gogs"],"created_at":"2026-07-01T03:32:23.869Z","updated_at":"2026-07-01T03:32:26.328Z","avatar_url":"https://github.com/dwyl.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n![gogs-server-logo](https://user-images.githubusercontent.com/194400/164705537-8253ff09-581d-438d-8025-453eecb41b96.png \"gogs server setup\")\n\nDeployment docs for our `Gogs` server on Fly.io: https://gogs-server.fly.dev\n\n\u003c/div\u003e\n\n### Why `Gogs`?\n\nWe use GitHub as the\n[single source of truth](https://en.wikipedia.org/wiki/Single_source_of_truth)\nfor our Product \u0026 Services. ⭐\u003cbr /\u003e\nOccasionally GitHub has\n[\"incidents\"](https://www.githubstatus.com/history)\nwhere it's offline for hours ... ⏳ \u003cbr /\u003e\nAlso, GitHub can\n[**_lose_ data**](https://news.ycombinator.com/item?id=31033758)\nif you're not careful;\ni.e. **`delete`** is **_forever_**! 🤦‍♀‍\u003cbr /\u003e\nSo we needed an _easy_ way to **backup** our data. 💾\n\n**`Gogs`** is a **_lightweight_ `Git` server**\nwith a familiar UI/UX\n(think GitHub circa 2018 clone) \u003cbr /\u003e\nthat can be deployed in **5 minutes**\nand has _most_ of the GitHub features we _use_. \u003cbr /\u003e\ne.g:\nOrgs, Repos, Markdown editor/viewer, Issues \u0026 Pull Requests.\n\n### Why Fly.io?\n\nFly is a **_dramatically_ simplified** Platform as a Service\n([PaaS](https://en.wikipedia.org/wiki/Platform_as_a_service))\nwith an underlying easily accessible Infrastructure as a Service\n([IaaS](https://en.wikipedia.org/wiki/Infrastructure_as_a_service)).\nIt combines the best elements of AWS and many from Heroku\nbut focusses on the essential and eliminates the bloat.\nWe love it and recommend it to anyone\ntired of the _complexity_ of AWS or the _cost_ of Heroku.\n\n### Why `Postgres`?\n\nAs the tagline says:\n\"_PostgreSQL: The World's Most Advanced Open Source Relational Database_.\"\n\nWe use and love it because it's fast, has excellent docs\nand great tooling.\n\n\u003e **Note**: We've used MySQL or MariaDB in the past they are both good.\n\u003e We think Postgres is better.\n\u003e It's the default Database for\n\u003e [**`Phoenix`**](https://github.com/dwyl/learn-phoenix-framework#our-top-10-reasons-why-phoenix)\n\u003e our chosen Web Framework,\n\u003e so using it with our **`Gogs`** server makes sense\n\u003e to reduce cognitive load and cost.\n\n\u003cbr /\u003e\n\n## _What_?\n\nThis repository documents our deployment of our **`Gogs`** server.\n\nSee: https://gogs-server.fly.dev/\n\n## How?\n\nThis is a step-by-step guide for recreating our server.\nIf you find it useful, please ⭐\n\n### Create an App\n\nCreate a Fly.io App for the Gogs Server:\n\n```sh\nflyctl launch --name gogs-server --image gogs/gogs --org dwyl\n```\n\n\u003e In our case we called our app `gogs-server`,\n\u003e pretty self-explanatory and not very creative.\n\u003e We like it when DevOps is\n\u003e [_immediately obvious_](https://en.wikipedia.org/wiki/KISS_principle).\n\u003e It dramatically reduces cognitive overload\n\u003e and context switching costs!\n\nSelect the type of instance you want:\n\n```sh\n? Select configuration:  [Use arrows to move, type to filter]\n\u003e Development - Single node, 1x shared CPU, 256MB RAM, 1GB disk\n  Development - Single node, 1x shared CPU, 512MB RAM, 10GB disk\n  Production - Highly available, 1x shared CPU, 256MB RAM, 10GB disk\n  Production - Highly available, 1x Dedicated CPU, 2GB RAM, 50GB disk\n  Production - Highly available, 2x Dedicated CPU's, 4GB RAM, 100GB disk\n```\n\nWe went with `Development` for now,\nbut once we have everything setup\nwe will return and create a `Production` instance.\n\n### Create a Volume\n\nCreate a Volume (Network Attached Storage):\nhttps://fly.io/docs/reference/volumes/\n\n```sh\nfly volumes create data --region lhr\n```\n\nThe volume is called `data`.\nBut under-the-hood the fly system\ngives it a unique name.\n\nYou can easily check this if needed by running:\n\nThe default size is 10Gb.\nWe definitely won't need that much.\n\n\u003cbr /\u003e\n\u003chr /\u003e\n\n#### Quick Note on Fly.io Postgres Database Clusters\n\nIf you already have a Postgres database cluster on Fly,\nyou can host as many Postgres databases\non as you like, the resources are scaled up automatically.\n\n\u003e \"_Users won't notice this!\n\u003e They’re directed to the nearest running instance automatically._\"\n\nJust remember to _enable_ autoscaling on your DB cluster (see below).\n\n\u003chr /\u003e\n\n### Create `PostgreSQL` DB \u0026 Attach to `Gogs`\n\nCreate a DB named `gogs-server-db` in the `lhr` (London) region:\n\n```sh\nfly pg create --name gogs-server-db --region lhr\n```\n\n\u003e Use your preferred region.\n\n### Enable Autoscaling\n\nsee: https://fly.io/docs/reference/scaling/\n\n```sh\nfly autoscale standard min=1\n```\n\n### Attach the DB to the `Gogs` App\n\nAttach the DB to the `Gogs` server:\n\n```sh\nfly postgres attach --app gogs-server --postgres-app gogs-server-db\n```\n\n### Intialize `Gogs`!\n\nWhen you first visit your `Gogs` instance,\nyou will be redirected to the `/install` page.\nThese were the settings we defined on ours:\n\n![gogs-fly-config-1of-2](https://user-images.githubusercontent.com/194400/165000531-6e352107-860b-4bb2-ad29-4f172f6fc08d.png)\n\n![gogs-fly-config-2of-2](https://user-images.githubusercontent.com/194400/165000528-79275762-f070-4bf0-b440-5a0fbf1ba9bc.png)\n\nIf you make a mistake with the setup of your Gogs server,\ndon't panic, you can _easily_ update\nthe\n[`app.ini`](https://github.com/gogs/gogs/blob/main/conf/app.ini)\nfile to change any of the settings.\n\nLogin to the VM via ssh:\n\n```sh\nflyctl ssh console\n```\n\nTrack down the `app.ini` file on the instance:\n\n```sh\nfind / -name app.ini\n```\n\nIn my case it was at:\n\n```sh\n/data/gogs/conf/app.ini\n```\n\nBefore making any changes,\nmake a backup of the file\nin case you need to revert.\ne.g:\n[`gogs-server/main/app.ini`](https://github.com/dwyl/gogs-server/blob/main/app.ini)\n\nEdit/update it:\n\n```sh\nvi /data/gogs/conf/app.ini\n```\n\nI updated:\n\n```sh\nSSH_PORT = 22\n```\n\nTo\n\n```sh\nSSH_PORT = 10022\n```\n\nThis mirrors the port forwarding defined in the `fly.toml` file:\n[fly.toml#L52](https://github.com/dwyl/gogs-server/blob/559d583070fe1db3d65189e662fefcb5932abc15/fly.toml#L52)\n\nIf you make any changes to the `app.ini` file,\nyou will need to restart the VM that is running your `gogs` instance.\ne.g:\n\n```sh\nflyctl restart gogs-server\n```\n\nYou will see output confirming the restart:\n\n```sh\ngogs-server is being restarted\n```\n\nMake sure to have `START_SSH_SERVER` to false in your `app.ini` file:\n\n```sh\nSTART_SSH_SERVER = false\n```\n\nIf defined to `true` you might not be able to add ssh keys via the Gogs\nsetting UI automatically.\nYou will need to rewrite the file manualy by runing the admin command:\n![image](https://user-images.githubusercontent.com/6057298/167601533-4f1c3100-db98-4a86-95ea-dd0b7970f664.png)\n\nsee: https://github.com/gogs/gogs/issues/4751\n\n### Test the `Gogs` Instance\n\nhttps://gogs-server.fly.dev/nelsonic\n\n![image](https://user-images.githubusercontent.com/194400/165000758-0ca9e54d-2c8a-429f-9c84-ff4bfd68bed2.png)\n\nI created a couple of repos, one `public` the other `private` to test.\n\nNext we want to _interact_ with a repo ...\n\n\u003c!--\n\n### SSH Config\n\nhttps://community.fly.io/t/ssh-connection-to-an-instance/834/2\n\n```sh\n2022-04-23T23:19:42Z   [info]2022/04/23 23:19:42 [FATAL] [gogs.io/gogs/internal/ssh/ssh.go:130 listen()] Failed to start SSH server: listen tcp 0.0.0.0:22: bind: permission denied\n2022-04-23T23:19:43Z   [info]2022/04/23 23:19:43 [ INFO] Gogs 0.13.0+dev\n```\n\n--\u003e\n\n#### Add SSH Key\n\nAdd your `ssh` key to the `Gogs` instance\nso that you can interact with the repo via `git`\nin your terminal.\n\nCopy the **_`public`_** `ssh` key on your main computer.\nIn my case the `id_rsa.pub` file is located at\n`~/.ssh/id_rsa.pub`\non my Mac.\nSo to copy the contents of the file,\nI run the following command:\n\n```sh\npbcopy \u003c ~/.ssh/id_rsa.pub\n```\n\nNext, connect to the `Gogs` Server\nand visit the `/user/settings/ssh`\npage, e.g:\nhttps://gogs-server.fly.dev/user/settings/ssh\n\nOnce you've successfully added your **_`public`_** `ssh` key\nto `Gogs` you should see a success message such as:\n\n\u003cimg width=\"1217\" alt=\"image\" src=\"https://user-images.githubusercontent.com/194400/164786677-18901fe2-1c38-4419-b63f-395ba9ff6d9e.png\"\u003e\n\n#### Clone Repo\n\nCreate a repository if you don't already have one, e.g:\nhttps://gogs-server.fly.dev/nelsonic/public-repo\n\n![image](https://user-images.githubusercontent.com/194400/164581017-247d388b-0ed5-475a-960d-55140247e47c.png)\n\nIf you attempt to clone the repo\nusing a standard command, e.g:\n\n```sh\ngit clone git@gogs-server.fly.dev:nelsonic/public-repo.git\n```\n\nYou will see the following error:\n\n```sh\n\nssh: connect to host gogs-server.fly.dev port 22: Connection refused\nfatal: Could not read from remote repository.\n\nPlease make sure you have the correct access rights\nand the repository exists.\n```\n\nThis is because the `TCP` port **`22`** is reserved\nfor actual `SSH` connections on Fly.io.\nWe could re-assign it for use with **`Gogs`**,\nbut then we would lose the ability to `ssh` into the instance ...\nWe don't want that,\nbecause it's useful to **`fly ssh console`**\nto debug \u0026 maintain the instance.\n\nAttempt to specify the TCP port:\n\n```sh\ngit clone -p 10022 git@gogs-server.fly.dev:nelsonic/public-repo.git\n```\n\nThat doesn't work.\nSo reading:\nhttps://stackoverflow.com/questions/5767850/git-on-custom-ssh-port\n\nTrying the following format:\nhttps://stackoverflow.com/a/5767880/1148249\n\n```sh\ngit clone ssh://git@mydomain.com:[port]/org|usernam/repo-name.git\n```\n\ne.g:\n\n```sh\ngit clone ssh://git@gogs-server.fly.dev:10022/nelsonic/public-repo.git\n```\n\n#### Make local changes\n\nUpdate the `README.md` on my Mac:\n\n\u003cimg width=\"1088\" alt=\"image\" src=\"https://user-images.githubusercontent.com/194400/165000134-7adfe672-01cf-4637-bb71-02c95e58709a.png\"\u003e\n\n#### Commit \u0026 Push Changes\n\n`git commit` and `git push` the code:\n\n```sh\ngit push\nEnumerating objects: 5, done.\nCounting objects: 100% (5/5), done.\nDelta compression using up to 8 threads\nCompressing objects: 100% (3/3), done.\nWriting objects: 100% (3/3), 350 bytes | 350.00 KiB/s, done.\nTotal 3 (delta 1), reused 0 (delta 0), pack-reused 0\nTo ssh://gogs-server.fly.dev:10022/nelsonic/public-repo.git\n   7f92c5d..f714a64  master -\u003e master\n```\n\n#### Confirm they Worked!\n\nhttps://gogs-server.fly.dev/nelsonic/public-repo\n![image](https://user-images.githubusercontent.com/194400/165000085-de1166d1-6f89-4dc9-9c47-aae89fca9003.png)\n\nBranches work:\n![image](https://user-images.githubusercontent.com/194400/164999937-ac78290e-5d09-4016-8b26-252a1134ba98.png)\n\nHere is the content on the `draft` branch:\n![image](https://user-images.githubusercontent.com/194400/164999949-d0076a91-3cf5-417d-8944-82861e2e39d7.png)\n\n### Check that it works for the _`private`_ repo\n\n```sh\ngit clone ssh://git@gogs-server.fly.dev:10022/nelsonic/private-repo.git\n```\n\nEdit the `README.md`:\n\n\u003cimg width=\"874\" alt=\"image\" src=\"https://user-images.githubusercontent.com/194400/165135543-0994659a-108f-4349-830d-6f7117f1d120.png\"\u003e\n\n```sh\ngit add . \u0026\u0026 git commit -m 'updated on mac' \u0026\u0026 git push\n```\n\nOutput:\n\n```sh\n 1 file changed, 3 insertions(+), 1 deletion(-)\nEnumerating objects: 5, done.\nCounting objects: 100% (5/5), done.\nDelta compression using up to 8 threads\nCompressing objects: 100% (3/3), done.\nWriting objects: 100% (3/3), 341 bytes | 341.00 KiB/s, done.\nTotal 3 (delta 1), reused 0 (delta 0), pack-reused 0\nTo ssh://gogs-server.fly.dev:10022/nelsonic/private-repo.git\n   5977268..c5d8552  master -\u003e master\n```\n\nResult: https://gogs-server.fly.dev/nelsonic/private-repo\n\n![private-repo-updated](https://user-images.githubusercontent.com/194400/165135838-e79e4098-041d-4093-92c3-4c2ba88aa297.png)\n\nThough you'll just have to take our word for it\nbecause the repo is **_`private_** ...\n\n![private-repo-404](https://user-images.githubusercontent.com/194400/165135960-24e20e24-756a-46f2-b3d1-efcbd159e3e5.png)\n\nYou will see a **`404`** error if you attempt to visit the URL.\n\n\u003cbr /\u003e\n\u003cbr /\u003e\n\n## Connect via `REST API` (`HTTPS`)\n\nThe second way of connecting to `Gogs` is via the `REST` API.\nHere we will be following and expanding on the official docs:\nhttps://github.com/gogs/docs-api\n\nVisit: `/user/settings/applications` of your `Gogs` instance,\ne.g:\nhttps://gogs-server.fly.dev/user/settings/applications\n\n![gogs-gen-new-token](https://user-images.githubusercontent.com/194400/165130480-1af6bdf0-939a-4fcb-8af8-3a42f6f8f10a.png)\n\nAnd click on **`Generate New Token`**.\n\nThen input the name of your token,\nin case you end up with multiple tokens.\n\n![gogs-gen-token](https://user-images.githubusercontent.com/194400/165130700-fd515ee1-3d51-4773-96cf-2fcbbe0a79ea.png)\n\nToken generated:\n\n![token-generated](https://user-images.githubusercontent.com/194400/165130794-4e732298-8d60-4107-9054-3d8deb343e6f.png)\n\nMy access token is:\n**`0ed304c9921c2cf33da4c832f843c160b70bb97e`**.\nWe will be using this below. Make a note of yours.\n\n\u003e Don't worry, this token was **deleted _immediately_**\n\u003e after we confirmed that everything was working while writing this guide\n\u003e (**_`before`_** publishing it!) so no risk in making this example public.\n\nWith this access token in-hand we can now run\n[`cURL`](https://en.wikipedia.org/wiki/CURL)\ncommands\nto test the `REST API`, e.g:\n\n```sh\ncurl -u \"nelsonic\" 'https://gogs-server.fly.dev/api/v1/users/unknwon/tokens'\n```\n\nYou will be prompted for the password for your username on `gogs`\n\nResponse:\n\n```sh\n[{\"name\":\"API Test\",\"sha1\":\"0ed304c9921c2cf33da4c832f843c160b70bb97e\"}]%\n```\n\nThe same as the token above.\n\nNow let's test accessing a repo via the `REST API`:\n\n```sh\ncurl 'https://gogs-server.fly.dev/api/v1/repos/nelsonic/public-repo?token=0ed304c9921c2cf33da4c832f843c160b70bb97e'\n```\n\n```json\n{\n  \"id\": 1,\n  \"owner\": {\n    \"id\": 1,\n    \"username\": \"nelsonic\",\n    \"login\": \"nelsonic\",\n    \"full_name\": \"\",\n    \"email\": \"nelson@dwyl.com\",\n    \"avatar_url\": \"https://secure.gravatar.com/avatar/f937427bea8db9d88608a54b2b803f1a?d=identicon\"\n  },\n  \"name\": \"public-repo\",\n  \"full_name\": \"nelsonic/public-repo\",\n  \"description\": \"testing public repo on gogs server running on fly.io\",\n  \"private\": false,\n  \"fork\": false,\n  \"parent\": null,\n  \"empty\": false,\n  \"mirror\": false,\n  \"size\": 61440,\n  \"html_url\": \"https://gogs-server.fly.dev/nelsonic/public-repo\",\n  \"ssh_url\": \"ssh://git@https://gogs-server.fly.dev:10022/nelsonic/public-repo.git\",\n  \"clone_url\": \"https://gogs-server.fly.dev/nelsonic/public-repo.git\",\n  \"website\": \"\",\n  \"stars_count\": 0,\n  \"forks_count\": 0,\n  \"watchers_count\": 1,\n  \"open_issues_count\": 0,\n  \"default_branch\": \"master\",\n  \"created_at\": \"2022-04-22T01:53:48Z\",\n  \"updated_at\": \"2022-04-22T01:53:48Z\",\n  \"permissions\": {\n    \"admin\": true,\n    \"push\": true,\n    \"pull\": true\n  }\n}\n```\n\nNext we want to read the contents of the `README.md` of a repo,\nthe API path has the following pattern:\n\n```sh\n/api/v1/repos/:username/:reponame/raw/:ref/:path\n```\n\nExample:\n\n```sh\ncurl 'https://gogs-server.fly.dev/api/v1/repos/nelsonic/public-repo/raw/master/README.md?token=0ed304c9921c2cf33da4c832f843c160b70bb97e'\n```\n\nResponse:\n\n```md\n# public-repo\n\ntesting public repo on gogs server running on fly.io\n\nUpdate on `README.md` Mac ... 🚀\n```\n\nExactly what we expect it to be. 🎉\n**`REST API`** is working. ✅\n\n#### Delete the Token\n\nAs noted above, we **_removed_** the **access token**\nfrom our `Gogs` server\nbefore publishing this:\n\n![gogs-token-deleted](https://user-images.githubusercontent.com/194400/165134016-e0f16797-cb54-4fb0-987c-66623d5b6599.png)\n\nIn a real-world app,\nAPI Key rotation is a good idea.\nsee:\nhttps://cloud.google.com/kms/docs/key-rotation\n\n\u003cbr /\u003e\n\n## Recommended Reading\n\n- Fly CLI: https://fly.io/docs/flyctl/\n- Fly Launch: https://fly.io/docs/flyctl/launch/\n- Fly Deploy: https://fly.io/docs/flyctl/deploy/\n- App Configuration (fly.toml):\n  https://fly.io/docs/reference/configuration/\n- Appkata: Gogs - standalone Git Server (Fly.io)\n  https://fly.io/docs/app-guides/git-gogs-server/\n  **Note**: this is a bit old (2020)\n  and there is no longer a `fly init` command\n  and the `fly.toml` file is incomplete.\n  Hence us needing to write these docs.\n  Thanks given to @codepope in:\n  https://community.fly.io/t/gogs-standalone-git-service-as-a-fly-example/358/2\n- Multi-region PostgreSQL:\n  https://fly.io/docs/getting-started/multi-region-databases/\n- Scaling and Autoscaling\n  https://fly.io/docs/reference/scaling/\n- Autoscale:\n  https://fly.io/docs/flyctl/autoscale/\n- Auto-scaling tutorial:\n  https://hosting.analythium.io/auto-scaling-shiny-apps-in-multiple-regions-with-fly-io/\n- SSH troubleshooting:\n  https://docs.github.com/en/authentication/troubleshooting-ssh/using-ssh-over-the-https-port\n\n\u003chr /\u003e\n\n[![HitCount](http://hits.dwyl.com/dwyl/gogs-server.svg)](http://hits.dwyl.com/dwyl/gogs-server)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdwyl%2Fgogs-server","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdwyl%2Fgogs-server","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdwyl%2Fgogs-server/lists"}