Skip to content

pjsny/astroneer-server-kit

Repository files navigation

astroneer-server-kit (Fly.io)

Self-hosted Astroneer dedicated server on Fly.io MachinesDocker image on Ubuntu 24.04 with WineHQ winehq-devel 10.6 (Noble), GnuTLS 3.8.3 via Ubuntu libgnutls30t64, and DepotDownloader for Windows app 728470. Wine prefix lives on the Fly volume at /data/winepfx (initialized on first boot if the image skeleton is empty). Local make start / make stop wrap flyctl. Use BuildKit (DOCKER_BUILDKIT=1) so APT layers use cache mounts and rebuilds stay faster.

Prerequisites

  • Buncurl -fsSL https://bun.sh/install | bash
  • Fly CLIbrew install flyctl
  • Fly.io account with a payment method (Machines + volumes)

Quick start

bun install
make setup       # wizard: Fly token, region, creates app + astroneer_server_kit_data volume, writes fly.toml + .env
make preflight
make start       # ensures dedicated IPv4 + ASTRONEER_PUBLIC_IP secret, then fly deploy — first build + DepotDownloader fetch can take 20–40+ minutes
make ip        # show app IPv4 (same address make start uses for clients)

Join address: PublicIP:8777. make start allocates a Fly dedicated IPv4 (if missing) and sets the ASTRONEER_PUBLIC_IP secret so PublicIP in AstroServerSettings.ini matches inbound traffic (not generic egress).

Commands

Command Purpose
make setup Interactive .env + fly.toml, Fly app + volume
make start Ensure dedicated IPv4, fly secrets set ASTRONEER_PUBLIC_IP, fly deploy
make stop Scale Machines to 0 (volume retained)
make destroy-all fly apps destroydata loss per Fly policy
make logs fly logs
make ip List app IPv4 addresses
make ssh fly ssh console
make status Short summary

Saves & data

World data lives on a Fly volume (astroneer_server_kit_data) mounted at /data. The game installs under /data/astroneer-server-kit (DepotDownloader). The Wine prefix is /data/winepfx on the volume, seeded from /opt/wine-prefix-skel on first boot. Saves symlink to /data/SaveGames. Stopping Machines keeps the volume; destroying the app may remove it — confirm in Fly docs.

Encryption / PublicIP

The server’s Engine.ini defaults to net.AllowEncryption=True. Clients must use the same value in their local Astroneer Engine.ini or joins may fail.

Some community setups run with encryption off under Wine; this kit keeps encryption on by default. If joins fail with TLS or handshake errors, try matching net.AllowEncryption between server Engine.ini and clients, or temporarily disable encryption for isolation testing.

make start syncs ASTRONEER_PUBLIC_IP to your app’s leased IPv4. If joins still fail or you changed IPs manually:

fly secrets set ASTRONEER_PUBLIC_IP=YOUR_IPV4 -a "$FLY_APP_NAME"

Then redeploy or restart the Machine.

Costs

Roughly tens of USD/month for a multi-CPU / 8 GB Machine plus volume and egress — see Fly pricing.

Repo layout

  • Dockerfile — Ubuntu 24.04, libgnutls30t64 (GnuTLS 3.8.3), WineHQ winehq-devel 10.6, DepotDownloader 3.4.0, BuildKit APT caches, entrypoint
  • docker/*.shentrypoint*.sh, astroneer-server-run (DepotDownloader install + winepfx on volume, run AstroServer.exe + Xvfb)
  • fly.tomlregenerated by setup (app name, region, ASTRONEER_SERVER_NAME, VM size)
  • scripts/ — Bun CLIs for setup / deploy / status

About

Self-hosted Astroneer dedicated server on DigitalOcean: Terraform + GitHub Actions, auto-shuts down when idle, world saves persist

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors