Requirements
- A server with Dokku installed and configured.
- The Dokku Postgres plugin.
- The Dokku letsencrypt plugin.
Steps
Create an application.
dokku apps:create gitea
Expose the ports for http
and ssh
. By default, gitea
exposes 3000
for http
and 22
for ssh
. We want our application to listen externally on port 80
, but we need to map our ssh
to a different port because 22
is used by the host.
We will rely on the docker-options plugin to expose ssh
properly.
# expose container `http` port 3000 on host `http` port 80
dokku proxy:ports-add gitea http:80:3000
# expose the container port 22 on host port 2222
dokku docker-options:add git deploy -p 2221:22
Add a rule in your firewall to allow connections on 2221
.
sudo ufw allow 2221/tcp
Create a storage directory for the Gitea files.
sudo mkdir /var/lib/dokku/data/storage/gitea_data
sudo chown user:user /var/lib/dokku/data/storage/gitea_data
dokku storage:mount gitea /var/lib/dokku/data/storage/gitea_data:/data
Pull and deploy the Docker image from dockerhub.
docker pull gitea/gitea:latest
docker tag gitea/gitea:latest dokku/gitea:latest
dokku git:from-image gitea dokku/gitea:latest
Add a Let’s encrypt TLS certificate with the Dokku letsencrypt plugin.
dokku letsencrypt:set git email <your-email>
dokku letsencrypt:enable git
Now, go visit gitea.<yourdomain>, e.g., gitea.yourdomain.com.
Configuration
Most of the options are autopopulated, use the following settings as needed.
- Get the database information from
dokku postgres:info gitea
. - Set the SSH port as
2221
. Gitea will use this to format your projects’ SSH connection info in the UI.
Resources
- Inspiration
- gitea-in-dokku
- Deploying Gogs to Dokku
- gogs-in-dokku
- Initializing an app repository from a docker image (Dokku docs)
No artificial intelligence was used in the making of this post.
Leave a Reply