diff --git a/goolinux.json b/goolinux.json index abf7716..1481909 100644 --- a/goolinux.json +++ b/goolinux.json @@ -22,13 +22,22 @@ "navidrome": { "enable": "true", "provider": "docker", - "src": "deluan/navidrome", - "ports": [ "4533:4533" ], "volumes": [ "/data/docker/navidrome:/data", "/data/music:/music:ro" ] - } + }, + "forgejo": { + "enable": "true", + "provider": "docker", + "volumes": [ + "/data/docker/forgejo:/data", + ], + "config": { + "db": "postgres", + "db_path": "/data/docker/forgejo/postgres", + }, + }, } } diff --git a/main.go b/main.go index ea7e1d4..9480644 100644 --- a/main.go +++ b/main.go @@ -100,7 +100,7 @@ func main() { case *os.PathError: // No system config to merge // Rely solely on the user config - fmt.Println(" Warning: No system config for service" + name) + fmt.Println(" Warning: No system config for service: " + name) default: fmt.Println("Error reading service config: ", err) return @@ -120,7 +120,7 @@ func main() { config.System.Packages = append(config.System.Packages, s.Packages...) } - // Generate a config file + // Generate service config files for _, f := range s.ConfigFiles { var b strings.Builder f := strings.Split(f, ":") diff --git a/services/forgejo/docker.json b/services/forgejo/docker.json new file mode 100644 index 0000000..db376ec --- /dev/null +++ b/services/forgejo/docker.json @@ -0,0 +1,14 @@ +{ +ports: ["3000:3000", "222:22"], +volumes: [ + "/etc/timezone:/etc/timezone:ro", + "/etc/localtime:/etc/localtime:ro", +], + +provider: "docker", +packages: [], +src: "codeberg.org/forgejo/forgejo:10", +configFiles: [ + "forgejo.template:/services/docker/forgejo.json", +] +} diff --git a/services/forgejo/forgejo.template b/services/forgejo/forgejo.template new file mode 100644 index 0000000..fcd803d --- /dev/null +++ b/services/forgejo/forgejo.template @@ -0,0 +1,88 @@ +{ +"networks": { + "forgejo": { + "external": false + } +}, + +"services": { + "server": { + "image": "{{.Src}}", + "container_name": "forgejo", + "environment": [ + "USER_UID=1000", + "USER_GID=1000", + {{if eq .Config.db "mysql"}} + FORGEJO__database__DB_TYPE=mysql, + FORGEJO__database__HOST=db:3306, + FORGEJO__database__NAME=forgejo, + FORGEJO__database__USER=forgejo, + FORGEJO__database__PASSWD=forgejo, + {{end}} + {{if eq .Config.db "postgres"}} + FORGEJO__database__DB_TYPE=postgres, + FORGEJO__database__HOST=db:5432, + FORGEJO__database__NAME=forgejo, + FORGEJO__database__USER=forgejo, + FORGEJO__database__PASSWD=forgejo, + {{end}} + ], + {{with .Config.Restart}}"restart": "{{.}}",{{end}} + "networks": [ + "forgejo" + ], + "volumes": [ + {{range .Volumes}} + "{{.}}", + {{end}} + ], + "ports": [ + {{range .Ports}} + "{{.}}", + {{end}} + ], + {{if .Config.db}} + "depends_on": [ + "db" + ], + {{end}} + }, + + {{if eq .Config.db "mysql"}} + "db": { + "image": "mysql:8", + "restart": "always", + "environment": [ + "MYSQL_ROOT_PASSWORD=forgejo", + "MYSQL_USER=forgejo", + "MYSQL_PASSWORD=forgejo", + "MYSQL_DATABASE=forgejo" + ], + "networks": [ + "forgejo" + ], + "volumes": [ + "{{.Config.db_path}}:/var/lib/mysql" + ] + }, + {{end}} + + {{if eq .Config.db "postgres"}} + "db": { + "image": "postgres:14", + "restart": "always", + "environment": [ + "POSTGRES_USER=forgejo", + "POSTGRES_PASSWORD=forgejo", + "POSTGRES_DB=forgejo" + ], + "networks": [ + "forgejo" + ], + "volumes": [ + "{{.Config.db_path}}:/var/lib/postgresql/data" + ] + }, + {{end}} +} +}