3.3 KiB
3.3 KiB
Gitea docker setup with ssh
Check if Git is installed
Check that Git is installed on the server. If it is not, install it first. Gitea requires Git version >= 2.0.
git --version
Create a user to run Gitea
adduser \
--system \
--shell /bin/bash \
--gecos 'Git Version Control' \
--group \
--disabled-password \
--home /home/git \
git
Change pass word for git user
passwd username
Make user git sudoers
sudo usermod -aG wheel test-user
Find UID
id -u <username>
or for current user
echo $UID
change uid and gid in next step for user git
make folder for gitea and cd in it
mkdir gitea
cd gitea
touch docker-compose.yml
docker compose yml config
use any editor to change docker-compose.yml with config
version: "3"
networks:
gitea:
external: false
services:
server:
image: gitea/gitea:1.16.9
container_name: gitea
environment:
- USER_UID=112 #change uid with one from last step
- USER_GID=112 #change gid with one from last step
- GITEA__database__DB_TYPE=postgres
- GITEA__database__HOST=db:5432
- GITEA__database__NAME=gitea
- GITEA__database__USER=gitea
- GITEA__database__PASSWD=gitea
restart: always
networks:
- gitea
volumes:
- ./gitea:/data
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
- /home/git/.ssh/:/data/git/.ssh # add this for ssh support
ports:
- "3000:3000"
- "127.0.0.1:2222:22" #ssh port to 2222 for gitea
depends_on:
- db
db:
image: postgres:14
restart: always
environment:
- POSTGRES_USER=gitea
- POSTGRES_PASSWORD=gitea
- POSTGRES_DB=gitea
networks:
- gitea
volumes:
- ./postgres:/var/lib/postgresql/data
seting up and down with docker compose
docker compose up -d
docker compose down
Give permission to user its home dir
this command is needed when cant use ssh-keygen for another user but root
chown -R git: /home/git/
Login as git user
su - username
Make ssh key pair
sudo -u git ssh-keygen -t rsa -b 4096 -C "Gitea Host Key"
set right permission for ssh authorized_keys
sudo -u git cat /home/git/.ssh/id_rsa.pub | sudo -u git tee -a /home/git/.ssh/authorized_keys
sudo -u git chmod 600 /home/git/.ssh/authorized_keys
Important: The pubkey from the git
user needs to be added “as is” while all other pubkeys added via the Gitea web interface will be prefixed with command="/usr [...]
.
/home/git/.ssh/authorized_keys
should then look somewhat like
# SSH pubkey from git user
ssh-rsa <Gitea Host Key>
# other keys from users most likely there is none
command="/usr/local/bin/gitea --config=/data/gitea/conf/app.ini serv key-1",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty <user pubkey>
Exit from git user and run needed command
first exit from user git
exit
and then run
cat <<"EOF" | sudo tee /usr/local/bin/gitea
#!/bin/sh
ssh -p 2222 -o StrictHostKeyChecking=no git@127.0.0.1 "SSH_ORIGINAL_COMMAND=\"$SSH_ORIGINAL_COMMAND\" $0 $@"
EOF
sudo chmod +x /usr/local/bin/gitea
remove git user from sudo
sudo deluser username sudo