Go to file
tseed e8486eaf60 init commit 2023-08-30 17:13:21 +01:00
README.md init commit 2023-08-30 17:13:21 +01:00

README.md

Add git user, secure ssh, setup sudoers

  • Switch host ssh port to 222 to allow Gitea to offer port 22.
ssh root@<host>
groupadd -r -g 1001 git && useradd -r -u 1001 -g 1001 -m -s /bin/bash git
nano -cw /etc/ssh/sshd_config

Port 222
PermitRootLogin prohibit-password
PasswordAuthentication no

systemctl restart ssh
exit

ssh -p 222 root@<host>
mkdir /home/git/.ssh
chown git.git /home/git/.ssh
chown -R 700 /home/git/.ssh
cp /root/.ssh/authorized_keys /home/git/.ssh
chown git.git /home/git/.ssh/authorized_keys
chmod 644 /home/git/.ssh/authorized_keys

echo "%git ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/git
chmod 0440 /etc/sudoers.d/git
exit

Install docker/docker-compose

ssh -p 222 git@<host>
sudo su -
apt-get update
apt-get upgrade
apt install apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable"
apt-cache policy docker-ce
apt install docker-ce
systemctl status docker
wget -O /usr/bin/docker-compose https://github.com/docker/compose/releases/download/v2.20.2/docker-compose-linux-x86_64
chmod +x /usr/bin/docker-compose
exit
sudo docker ps -a
sudo docker-compose ls

Write compose file

sudo su -
mkdir -p /opt/containers/gitea/data /opt/containers/compose/gitea
chown -R git.git /opt/containers/gitea/data
chmod 775 /opt/containers/gitea/data
nano -cw /opt/containers/compose/gitea/docker-compose.yaml

Custom ENV vars to ensure instant deployment and ACME ssl

  • INSTALL_LOCK is used to bypass the install screen, as most env vars are populated there should be no need to run manual setup.
nano -cw /opt/containers/compose/gitea/docker-compose.yaml

version: "3.9"

networks:
  gitea:
    name: gitea
    driver: bridge
    driver_opts:
      parent: eth0
    ipam:
      config:
        - subnet: 172.16.10.0/24
          ip_range: 172.16.10.0/24
          gateway: 172.16.10.1

services:
  server:
    image: gitea/gitea:1.20.3
    container_name: gitea
    environment:
      - USER_UID=1001
      - USER_GID=1001
      - GITEA__service__DISABLE_REGISTRATION=true
      - GITEA__service__SHOW_REGISTRATION_BUTTON=false
      - GITEA__service__ENABLE_USER_HEATMAP=false
      - GITEA__service__ENABLE_TIMETRACKING=false
      - GITEA__service__SHOW_MILESTONES_DASHBOARD_PAGE=false
      - GITEA__picture__DISABLE_GRAVATAR=true
      - GITEA__server__LANDING_PAGE=explore
      - GITEA__openid__ENABLE_OPENID_SIGNIN=false
      - GITEA__ui__SHOW_USER_EMAIL=false
      - GITEA__ui__DEFAULT_SHOW_FULL_NAME=false
      - GITEA__database__DB_TYPE=sqlite3
      - GITEA__mailer__ENABLED=false
      - GITEA__time__DEFAULT_UI_LOCATION=Europe/London
      - GITEA__security__INSTALL_LOCK=true
      - GITEA__server__PROTOCOL=https
      - GITEA__server__DOMAIN=static.6.234.217.95.clients.your-server.de
      - GITEA__server__ROOT_URL=https://static.6.234.217.95.clients.your-server.de/
      - GITEA__server__ENABLE_ACME=true
      - GITEA__server__ACME_ACCEPTTOS=true
      - GITEA__server__ACME_DIRECTORY=https
      - GITEA__server__ACME_EMAIL=toby.n.seed@gmail.com
      - GITEA__server__ACME_URL=https://acme-staging-v02.api.letsencrypt.org/directory
    restart: unless-stopped
    volumes:
      - type: bind
        source: /opt/containers/gitea/data
        target: /data
      - type: bind
        source: /etc/timezone
        target: /etc/timezone
        read_only: true
      - type: bind
        source: /etc/localtime
        target: /etc/localtime
        read_only: true
    ports:
      - "443:3000"
      - "22:22"
    networks:
      gitea:
        ipv4_address: 172.16.10.3

Deploy Gitea

cd /opt/containers/compose/gitea
docker-compose up

Enter container to create admin user

user: <user>
email: user@example.com
password: <password>

docker exec -it -u git gitea /bin/bash
cat /data/gitea/conf/app.ini
gitea admin user create --username <user> --email user@example.com --password "<password>" --admin