forgejo

Forgejo is a self hosted version control system, and the one that powers Codeberg.

If you want to just try Forgejo, just create a Codeberg account. If you want to self-host it, thought, here's an example config, using postgres as a database.

Also, the code source for this site is on a self-hosted forgejo

environment variables

DB_NAME='database name - eg: forjego'
DB_USER='database user - eg: forjego'
DB_PASSWD='database password - eg: forjego'
DOMAIN='domain for the server - eg: code.kntc.be'
PORT='port for reverse proxying - eg: 4000'

docker-compose

name: forgejo

services:
  server:
    image: codeberg.org/forgejo/forgejo:14
    container_name: forgejo
    environment:
      - USER_UID=1000
      - USER_GID=1000
      - FORGEJO__database__DB_TYPE=postgres
      - FORGEJO__database__HOST=db:5432
      - FORGEJO__database__NAME=$DB_NAME
      - FORGEJO__database__USER=$DB_USER
      - FORGEJO__database__PASSWD=$DB_PASSWD
    restart: always
    networks:
      - forgejo
      - caddy
    volumes:
      - ./forgejo:/data
      - /etc/timezone:/etc/timezone:ro
      - /etc/localtime:/etc/localtime:ro
    ports:
      - '222:22'
    depends_on:
      - db
    labels:
      caddy: $DOMAIN
      caddy.reverse_proxy: "{{upstreams $PORT}}"

  db:
    image: postgres:18
    restart: always
    environment:
      - POSTGRES_USER=$DB_PASSWD
      - POSTGRES_PASSWORD=$DB_USER
      - POSTGRES_DB=$DB_NAME
    networks:
      - forgejo
    volumes:
      - ./postgres:/var/lib/postgresql

networks:
  caddy:
    external: true
  forgejo: