alexveley 9e3f2bc9aa
Some checks failed
Build and Publish Docker Image (Gitea Registry) / docker (push) Failing after 7s
Switch publishing/docs to Gitea container registry
Update CI and documentation to use git.easygoingaming.com image paths and document reqPackageAccess behavior in Pterodactyl when package visibility or pull auth is not configured.
2026-04-25 00:57:02 -04:00

Avorion Pterodactyl Compatibility Image

This is a thin wrapper image for the Avorion egg that keeps behavior as close as possible to the original ghcr.io/ptero-eggs/steamcmd:debian image while fixing Avorion's getpwuid(getuid()) returned NULL startup failure.

What this fixes

Avorion expects the current runtime UID inside the container to resolve to a valid user entry with a home directory. On some Pterodactyl setups, the server process runs as a UID that does not exist in /etc/passwd inside the image. When that happens, Avorion can crash on startup with:

  • Error finding home directory: getpwuid(getuid()) returned NULL
  • Could not find a suitable directory for saving files

This image adds a temporary passwd/group entry at startup using libnss-wrapper, while keeping the rest of the egg behavior nearly unchanged.

Build and publish

This project is designed for deployment in Pterodactyl using the Gitea container registry on git.easygoingaming.com.

Replace YOUR_GITEA_USER with your Gitea namespace.

docker login git.easygoingaming.com
docker build -t git.easygoingaming.com/YOUR_GITEA_USER/avorion-steamcmd-nsswrap:latest .
docker push git.easygoingaming.com/YOUR_GITEA_USER/avorion-steamcmd-nsswrap:latest

Egg changes

In your Avorion egg JSON, change only the Docker image entry.

From:

"docker_images": {
  "ghcr.io/ptero-eggs/steamcmd:debian": "ghcr.io/ptero-eggs/steamcmd:debian"
}

To something like:

"docker_images": {
  "git.easygoingaming.com/YOUR_GITEA_USER/avorion-steamcmd-nsswrap:latest": "git.easygoingaming.com/YOUR_GITEA_USER/avorion-steamcmd-nsswrap:latest"
}

You can leave the install script alone for the first test.

Start with the most conservative startup possible so you are only testing the image fix:

export HOME=/home/container; mkdir -p "/home/container/galaxy/{{GALAXY_NAME}}/moddata/ConfigLib"; exec ./bin/AvorionServer --galaxy-name "{{GALAXY_NAME}}" --admin "{{ADMIN_ID}}" --datapath galaxy --port "{{SERVER_PORT}}" --query-port "{{QUERY_PORT}}" --steam-master-port "{{STEAM_MASTER_PORT}}" --steam-query-port "{{STEAM_QUERY_PORT}}" --max-players "{{MAX_PLAYERS}}" --difficulty "{{DIFFICULTY}}" --collision-damage "{{COLLISION_DMG}}" --save-interval "{{SAVE_INTERVAL}}" --same-start-sector "{{SAME_START_SECTOR}}" --server-name "{{SERVER_NAME}}" --threads "{{GAME_THREADS}}" --listed "{{SERVER_LISTED}}"

Suggested rollout steps

  1. Add Dockerfile and entrypoint.sh to a new Git repo.
  2. Build and push the image to GHCR.
  3. Update only the egg's Docker image reference.
  4. Leave the install script unchanged.
  5. Use the conservative startup command above.
  6. Reinstall or rebuild the server container if needed so it pulls the new image.
  7. Start the server and confirm the Avorion home-directory error is gone.
  8. Only after it boots cleanly, revisit --datapath, symlinks, or mod path adjustments.

Pterodactyl registry auth note

If Pterodactyl logs unauthorized: reqPackageAccess while pulling, the image is either not published yet or the registry requires auth for pulls.

  • Confirm the image tag exists in Gitea Packages.
  • If the package is private, configure Docker registry credentials on the Pterodactyl node for git.easygoingaming.com.
  • If you want anonymous pulls, set the package visibility to public in Gitea.
Description
No description provided
Readme 41 KiB
Languages
Shell 71%
Python 23.2%
Dockerfile 5.8%