Platform: Ubuntu Server 24.04.3 LTS (headless)
Hardware: Repurposed personal desktop (Intel Core i7-7700, 16 GB RAM)
Access model: SSH remote administration
Networking: ZeroTier VLAN (CGNAT bypass)
Scope: Private multiplayer server for a small group of known players
This repository documents the configuration and operational setup of a private Arma 3 dedicated server deployed on repurposed consumer hardware running Ubuntu Server. The server is administered entirely via SSH and runs without a graphical interface.
The project was completed as a solutioin to a personal problem with hosting games on ARMA3.
The primary motivations for this deployment were:
- Hardware repurposing: The host machine — a 7th-generation Intel desktop system released in 2017 — is no longer suitable for modern gaming or content creation workloads. Repurposing it as a dedicated server extends its operational life and reduces electronic waste.
- Practical Linux administration: The project required working knowledge of Ubuntu Server, SSH, UFW, Netplan, SteamCMD, and shell scripting in a real deployment context.
- Private server hosting: Running a dedicated server gives full control over mods, mission files, player access, and server parameters without relying on third-party hosting services.
| Component | Detail |
|---|---|
| OS | Ubuntu Server 24.04.3 LTS (Noble Numbat) |
| Kernel | Linux 6.8.0-87-generic |
| CPU | Intel Core i7-7700 @ 4.2 GHz (4C/8T) |
| RAM | 16 GB DDR4 @ 2400 MHz |
| Primary storage | 256 GB M.2 SATA SSD |
| Secondary storage | 1 TB HDD (7200 RPM) |
| Network access | ZeroTier virtual LAN (CGNAT environment) |
| Remote admin | OpenSSH Server v9.6p1 |
| Game server | Arma 3 Dedicated Server via SteamCMD (AppID 233780) |
The server runs headless. All administration is performed over SSH from a remote Windows workstation. File transfers are handled via WinSCP (SFTP).
| Tool / Service | Role |
|---|---|
| Ubuntu Server 24.04.3 LTS | Host operating system |
| OpenSSH | Remote shell access |
| Netplan | Static IP configuration |
| UFW (Uncomplicated Firewall) | Packet filtering |
| SteamCMD | Game server installation and updates |
| ZeroTier One | Virtual LAN / CGNAT bypass |
| WinSCP | File transfer (SFTP from Windows) |
| Bash | Startup script |
/
├── README.md
├── docs/
│ ├── ubuntu-server-setup.md
│ ├── ssh-administration.md
│ ├── arma3-server-configuration.md
│ ├── networking-zerotier-cgnat.md
│ ├── firewall-configuration.md
│ └── operational-notes.md
└── scripts/
└── startserver.sh
- The server is accessible only to devices authorized on the ZeroTier network. It is not publicly listed or reachable from the open internet.
- Player capacity is limited to 25 devices under the ZeroTier free tier.
- The server is started and stopped manually. There is no automatic startup on boot or crash recovery configured in this deployment.
- Mods and mission files are managed manually via WinSCP and SteamCMD.
- This configuration is tested and operational for sessions with 3–5 simultaneous players.
The following were considered but not included in this deployment:
- Systemd service unit — server is started manually via shell script
- Automated backups — not implemented; configuration files are maintained manually
- Monitoring or alerting — no Prometheus, Grafana, or equivalent
- Containerization — server runs directly on the host, not in Docker or similar
- CI/CD pipelines — no automated deployment workflow
- Web-based administration panel — SSH is the only management interface
- BattlEye anti-cheat — disabled; this is a private server with known players
- Database integration — no player statistics or persistent logging infrastructure
- IPv6 as primary connectivity — ZeroTier handles all external access
The startup script (scripts/startserver.sh) reflects the final working configuration
used to operate the server. Sensitive values such as file paths, credentials, server
names, and mod identifiers have been replaced with placeholders for security and
privacy reasons.
The script is maintained and understood by the author and represents practical operational usage rather than a generic example.
