Docker Compose Install Error

I’ve recently upgraded my SSD that I’m running this on, I had this working before the upgrade.

I’ve basically done a clean install and I’m running into a terrible problem.
I am running ARM64 and I’ve tried both Debian 13 and Ubuntu 24.04.3 LTS.

My current docker compose:

networks:
  gitea:
    external: false

volumes:
  gitea:
    driver: local

services:
  server:
    image: gitea/gitea:latest
    container_name: gitea
    environment:
      - USER_UID=1000
      - USER_GID=1000
      - GITEA__database__DB_TYPE=mysql
      - GITEA__database__HOST=db:3306
      - GITEA__database__NAME=gitea
      - GITEA__database__USER=gitea
      - GITEA__database__PASSWD=dbpass
    restart: always
    networks:
      - gitea
    volumes:
      - gitea:/data
      - /etc/timezone:/etc/timezone:ro
      - /etc/localtime:/etc/localtime:ro
    ports:
      - "3311:3000"
      - "6622:22"
    depends_on:
      - db

  db:
    image: docker.io/library/mysql:8
    restart: always
    environment:
      - MYSQL_ROOT_PASSWORD=rootpassword
      - MYSQL_USER=gitea
      - MYSQL_PASSWORD=dbpass
      - MYSQL_DATABASE=gitea
    networks:
      - gitea
    volumes:
      - ./mysql:/var/lib/mysql

My NGINX Proxy:

server {
   listen 80;
   server_name git.mydomain.com;

   proxy_buffer_size   128k;
   proxy_buffers   4 256k;
   proxy_busy_buffers_size   256k;

   listen 443 ssl http2;
   listen [::]:443 ssl http2;
   ssl_certificate         /etc/ssl/git-cert.pem;
   ssl_certificate_key     /etc/ssl/git-key.pem;
   ssl_client_certificate /etc/ssl/cloudflare.pem;
   ssl_verify_client on;

   location / {
      client_max_body_size       512m;
      client_body_buffer_size    8m;
      proxy_pass http://127.0.0.1:3311;
      proxy_set_header Connection $http_connection;
      proxy_set_header Upgrade $http_upgrade;
      proxy_set_header Host $host;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-Host $host;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header X-Forwarded-Proto $scheme;
      proxy_set_header X-Forwarded-Port $server_port;
   }
}

What I’ve found out is when I hit install after going through the installation page right after I put up the service is that it’s no longer accepting curl requests. It just fails.

Docker Gitea Logs:

2025/12/02 20:56:55 .../environment-to-ini.go:104:runEnvironmentToIni() [I] Settings saved to: "/data/gitea/conf/app.ini"
Generating /data/ssh/ssh_host_ecdsa_key...
Server listening on :: port 22.
Server listening on 0.0.0.0 port 22.
2025/12/02 20:56:59 cmd/web.go:266:runWeb() [I] Starting Gitea on PID: 15
2025/12/02 20:56:59 cmd/web.go:114:showWebStartupMessage() [I] Gitea version: 1.25.2 built with GNU Make 4.4.1, go1.25.4 : bindata, timetzdata, sqlite, sqlite_unlock_notify
2025/12/02 20:56:59 cmd/web.go:115:showWebStartupMessage() [I] * RunMode: prod
2025/12/02 20:56:59 cmd/web.go:116:showWebStartupMessage() [I] * AppPath: /usr/local/bin/gitea
2025/12/02 20:56:59 cmd/web.go:117:showWebStartupMessage() [I] * WorkPath: /data/gitea
2025/12/02 20:56:59 cmd/web.go:118:showWebStartupMessage() [I] * CustomPath: /data/gitea
2025/12/02 20:56:59 cmd/web.go:119:showWebStartupMessage() [I] * ConfigFile: /data/gitea/conf/app.ini
2025/12/02 20:56:59 cmd/web.go:120:showWebStartupMessage() [I] Prepare to run install page
2025/12/02 20:57:00 cmd/web.go:328:listen() [I] Listen: http://0.0.0.0:3000
2025/12/02 20:57:00 cmd/web.go:332:listen() [I] AppURL(ROOT_URL): http://localhost:3000/
2025/12/02 20:57:00 modules/graceful/server.go:50:NewServer() [I] Starting new Web server: tcp:0.0.0.0:3000 on PID: 15
2025/12/02 20:57:33 models/db/collation.go:179:preprocessDatabaseCollation() [W] Current database has been altered to use collation "utf8mb4_0900_as_cs"
2025/12/02 20:57:49 routers/install/install.go:503:SubmitInstall() [I] Save settings to custom config file /data/gitea/conf/app.ini
2025/12/02 20:57:49 routers/common/db.go:24:InitDBEngine() [I] Beginning ORM engine initialization.
2025/12/02 20:57:49 routers/common/db.go:31:InitDBEngine() [I] ORM engine initialization attempt #1/10...
2025/12/02 20:57:51 routers/install/install.go:582:SubmitInstall() [I] First-time run install finished!
2025/12/02 20:57:54 cmd/web.go:379:listen() [I] HTTP Listener: 0.0.0.0:3000 Closed
2025/12/02 20:57:54 cmd/web.go:114:showWebStartupMessage() [I] Gitea version: 1.25.2 built with GNU Make 4.4.1, go1.25.4 : bindata, timetzdata, sqlite, sqlite_unlock_notify
2025/12/02 20:57:54 cmd/web.go:115:showWebStartupMessage() [I] * RunMode: prod
2025/12/02 20:57:54 cmd/web.go:116:showWebStartupMessage() [I] * AppPath: /usr/local/bin/gitea
2025/12/02 20:57:54 cmd/web.go:117:showWebStartupMessage() [I] * WorkPath: /data/gitea
2025/12/02 20:57:54 cmd/web.go:118:showWebStartupMessage() [I] * CustomPath: /data/gitea
2025/12/02 20:57:54 cmd/web.go:119:showWebStartupMessage() [I] * ConfigFile: /data/gitea/conf/app.ini
2025/12/02 20:57:54 cmd/web.go:120:showWebStartupMessage() [I] Prepare to run web server
2025/12/02 20:57:54 routers/init.go:118:InitWebInstalled() [I] Git version: 2.49.1 (home: /data/gitea/home)
2025/12/02 20:57:55 modules/storage/storage.go:180:initAttachments() [I] Initialising Attachment storage with type: local
2025/12/02 20:57:55 modules/storage/local.go:33:NewLocalStorage() [I] Creating new Local Storage at /data/gitea/attachments
2025/12/02 20:57:55 modules/storage/storage.go:170:initAvatars() [I] Initialising Avatar storage with type: local
2025/12/02 20:57:55 modules/storage/local.go:33:NewLocalStorage() [I] Creating new Local Storage at /data/gitea/avatars
2025/12/02 20:57:55 modules/storage/storage.go:196:initRepoAvatars() [I] Initialising Repository Avatar storage with type: local
2025/12/02 20:57:55 modules/storage/local.go:33:NewLocalStorage() [I] Creating new Local Storage at /data/gitea/repo-avatars
2025/12/02 20:57:55 modules/storage/storage.go:190:initLFS() [I] Initialising LFS storage with type: local
2025/12/02 20:57:55 modules/storage/local.go:33:NewLocalStorage() [I] Creating new Local Storage at /data/git/lfs
2025/12/02 20:57:55 modules/storage/storage.go:202:initRepoArchives() [I] Initialising Repository Archive storage with type: local
2025/12/02 20:57:55 modules/storage/local.go:33:NewLocalStorage() [I] Creating new Local Storage at /data/gitea/repo-archive
2025/12/02 20:57:55 modules/storage/storage.go:212:initPackages() [I] Initialising Packages storage with type: local
2025/12/02 20:57:55 modules/storage/local.go:33:NewLocalStorage() [I] Creating new Local Storage at /data/gitea/packages
2025/12/02 20:57:55 modules/storage/storage.go:223:initActions() [I] Initialising Actions storage with type: local
2025/12/02 20:57:55 modules/storage/local.go:33:NewLocalStorage() [I] Creating new Local Storage at /data/gitea/actions_log
2025/12/02 20:57:55 modules/storage/storage.go:227:initActions() [I] Initialising ActionsArtifacts storage with type: local
2025/12/02 20:57:55 modules/storage/local.go:33:NewLocalStorage() [I] Creating new Local Storage at /data/gitea/actions_artifacts
2025/12/02 20:57:55 routers/init.go:140:InitWebInstalled() [I] SQLite3 support is enabled
2025/12/02 20:57:55 routers/common/db.go:24:InitDBEngine() [I] Beginning ORM engine initialization.
2025/12/02 20:57:55 routers/common/db.go:31:InitDBEngine() [I] ORM engine initialization attempt #1/10...
2025/12/02 20:57:55 cmd/web.go:207:serveInstalled() [I] PING DATABASE mysql
2025/12/02 20:57:56 cmd/web.go:207:serveInstalled() [W] Table system_setting Column version db default is , struct default is 1
2025/12/02 20:57:56 cmd/web.go:207:serveInstalled() [W] Table label Column archived_unix db default is , struct default is NULL
2025/12/02 20:57:56 routers/init.go:146:InitWebInstalled() [I] ORM engine initialization successful!
2025/12/02 20:58:02 .../indexer/issues/indexer.go:78:InitIssueIndexer.1() [I] PID 15: Initializing Issue Indexer: bleve
2025/12/02 20:58:02 .../indexer/stats/indexer.go:41:populateRepoIndexer() [I] Populating the repo stats indexer with existing repositories
2025/12/02 20:58:02 routers/init.go:87:syncAppConfForGit() [I] AppPath changed from '' to '/usr/local/bin/gitea'
2025/12/02 20:58:02 routers/init.go:92:syncAppConfForGit() [I] CustomConf changed from '' to '/data/gitea/conf/app.ini'
2025/12/02 20:58:02 routers/init.go:98:syncAppConfForGit() [I] re-sync repository hooks ...
2025/12/02 20:58:02 .../indexer/issues/indexer.go:155:InitIssueIndexer.2() [I] Issue Indexer Initialization took 14.757502ms
2025/12/02 20:58:02 routers/init.go:101:syncAppConfForGit() [I] re-write ssh public keys ...
2025/12/02 20:58:02 cmd/web.go:328:listen() [I] Listen: http://0.0.0.0:3311
2025/12/02 20:58:02 cmd/web.go:332:listen() [I] AppURL(ROOT_URL): https://git.mydomain.com/
2025/12/02 20:58:02 cmd/web.go:335:listen() [I] LFS server enabled
2025/12/02 20:58:02 modules/graceful/server.go:50:NewServer() [I] Starting new Web server: tcp:0.0.0.0:3311 on PID: 15

I’ve also got this kind of working by keeping the ports default during the installation screen on startup. But my gitea container is complaining about my MySQL connection still with this error:
2025/12/03 02:24:02 routers/common/db.go:37:InitDBEngine() [E] ORM engine initialization attempt #2/10 failed. Error: dial tcp 172.18.0.2:3306: connect: connection refused