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.
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 NULLCould 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.
Recommended startup command
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
- Add
Dockerfileandentrypoint.shto a new Git repo. - Build and push the image to GHCR.
- Update only the egg's Docker image reference.
- Leave the install script unchanged.
- Use the conservative startup command above.
- Reinstall or rebuild the server container if needed so it pulls the new image.
- Start the server and confirm the Avorion home-directory error is gone.
- 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.