gitea-blog/content/post/running-gitea-on-flyio.md
HesterG dab0be78b2 docusaurus blog (#266)
# Notes

- date must not have double quotes, e.g., should be like `date: 2022-10-30T18:25:00+09:15`

- Updated header.

  ![Screen Shot 2023-07-11 at 17.27.49](/attachments/d14b0c62-3630-47a9-bcda-25c6459d4e8b)

- Used customized blog plugin to get all tags with reference to [plugins/blog/index.js](https://github.com/questdb/questdb.io/blob/master/plugins/blog/index.js). Filter by tag section, tag list page.

  ![Screen Shot 2023-07-11 at 18.10.28](/attachments/59561940-a2f7-4ab5-b99a-1d5b84fdbcad)

  ![Screen Shot 2023-07-11 at 17.31.20](/attachments/d6d82976-12c0-4c0f-acfe-218e30c7c627)

- Added coverImage to frontmatter to assgin cover image, e.g., `coverImage: "/img/blog-covers/test.jpeg"`
  And on blog page, cover image will appear on top if `coverImage` added to frontmatter, e.g.,

   ![Screen Shot 2023-07-11 at 17.33.09](/attachments/c27e7971-11db-4241-bc53-9e43df235fbc)

  ![Screen Shot 2023-07-11 at 17.33.20](/attachments/552dd9cf-fc55-4547-8014-864aeb0e5050)

- authors are managed by the `authors.yml` file. [reference](https://docusaurus.io/docs/blog#global-authors)
- [ejected](https://docusaurus.io/docs/swizzling#ejecting) `@docusaurus/theme-classic BlogListPage` and `@docusaurus/theme-classic BlogPostPage`, which are marked as `unsafe` by docusaurus, so need to maintain these components. ([original BlogListPage](https://github.com/facebook/docusaurus/blob/main/packages/docusaurus-theme-classic/src/theme/BlogListPage/index.tsx), [original BlogPostPage](https://github.com/facebook/docusaurus/blob/main/packages/docusaurus-theme-classic/src/theme/BlogPostPage/index.tsx))
- [referenced repo](https://github.com/questdb/questdb.io)

# How to test

```
npm i
npm run start
```

# Build and serve

```
npm run build
npm run serve
```

# Help Needed

Deploy and preview steps

# More Screenshots

![Screen Shot 2023-07-11 at 17.34.54](/attachments/ee9d46ac-72ac-49de-90df-38e2afc6db02)

Mobile:

![Screen Shot 2023-07-11 at 18.16.54](/attachments/8f1471a3-27cc-459a-a2ce-c0e5bdf604d3)

![Screen Shot 2023-07-10 at 17.53.18](/attachments/992d9f24-e130-41a9-8b55-86744539524c)

![Screen Shot 2023-07-06 at 11.02.21](/attachments/af1632b8-6a61-47f7-b15d-4a6080bebadb)

![Screen Shot 2023-07-11 at 18.17.43](/attachments/af0df617-27a4-46f9-a8a3-037be268e1cd)

![Screen Shot 2023-07-03 at 15.32.45](/attachments/ad2c1217-e82d-434c-81c8-5d4058e18591)

# TODO

- [x] Add Banner to blog page

Reviewed-on: gitea/blog#266
Co-authored-by: HesterG <hestergong@gmail.com>
Co-committed-by: HesterG <hestergong@gmail.com>
2023-07-12 03:25:19 +00:00

3.7 KiB

date authors title tags draft
2022-04-19T14:03:27+02:00 techknowlogick Running Gitea on fly.io
deployment
tutorial
false

Gitea is designed to run on many different platforms and has very minimal requirements for resources. This is great because whatever computer you have, Gitea can run on it.

Although you might like to self-host your own instance at times, you might not want to manage all of the moving elements of a server, such as firewalls, webservers, TLS certificates, and so on. This is where fly.io enters the picture. Fly.io is a platform with a generous free tier that allows you to tell them the Docker image you want to run and they'll take care of all the tough and time-consuming operational overhead.

To get started, you'll need to sign up for a fly.io account. Luckily, they have a nice getting started guide that walks you through the process.

Once you have an account you can get started with running Gitea on fly.io.

# create a directory to store fly.io application config
mkdir gitea-on-fly
# enter into the newly created directory
cd gitea-on-fly
# tell fly.io you wish to create a new application in the amsterdam region (there are many other regions you could pick too)
# pick any name for the app that you'd like, in the example we are using `gitea-on-fly`
flyctl launch --name gitea-on-fly --no-deploy --region ams
# give the newely create application persistant storage, so your data persists between app updates
flyctl volumes create gitea_data --size 1 --region ams --app gitea-on-fly

You'll notice that once you've created the app, a new file, named fly.toml, will be created in the directory you just made. This contains a lot of placeholder information, you'll want to replace with the below content. Using the name you picked when you created the application replace gitea-on-fly from the below config in all the places it occurs.

app = "gitea-on-fly"

kill_timeout = 5

[build]
  image = "gitea/gitea:latest" # latest is the most recent stable release

[env]
  GITEA__database__DB_TYPE="sqlite3"
  GITEA__database__PATH="/data/gitea/gitea.db"
  GITEA__server__DOMAIN="gitea-on-fly.fly.dev"
  GITEA__server__SSH_DOMAIN="gitea-on-fly.fly.dev"
  GITEA__server__ROOT_URL="https://gitea-on-fly.fly.dev"
  GITEA__security__INSTALL_LOCK="true" # Don't show installer
  # GITEA__service__DISABLE_REGISTRATION="true" # TODO: uncomment once you have created your first user

# persist data
[[mounts]]
  destination = "/data"
  source = "gitea_data"

# ssh traffic
[[services]]
  internal_port = 22
  protocol = "tcp"
  [[services.ports]]
    port = 22

# https traffic
[[services]]
  internal_port = 3000
  protocol = "tcp"
  
  [[services.ports]]
    handlers = ["http"]
    force_https = true
    port = 80

  [[services.ports]]
    handlers = ["tls", "http"]
    port = 443

Once you have updated the configuration example with the application name you chose run flyctl deploy, and it will push every up to fly.io and deploy your gitea instance.

Now you can visit https://gitea-on-fly.fly.dev (or whichever name you chose), and you can create an account and use your Gitea instance.

If you wish to be the only one with an account on your instance, after you've registered you account you can close registrations by uncommenting the environment variable GITEA__service__DISABLE_REGISTRATION, and running flyctl deploy again.

Now that you have a Gitea instance up and running on fly.io, you may wish to look into backups, using your own domain name, scaling up RAM/CPU using the fly.io cli, or even using fly.io's hosted postgres as database instead of sqlite.