-
Notifications
You must be signed in to change notification settings - Fork 5
Manual Stack Deployment
The following instructions will walk you through a full manual deployment. This includes installing Captain from DEB or RPM packages onto manually-provisioned LXC instances in Proxmox. In the future, a bootstrap process will be provided where Captain will be able to install itself into a Proxmox cluster using its own stack and state store.
A Captain stack requires the following services to be installed on your network, and all of these services must be able to communicate with each other on the same network.
- Proxmox
5.X
or later. - Any DHCP server (ISC standalone or integrated on a network device).
- (Optional) Postgres (any version that is not EOL).
- Proxmox must be in "cluster mode", regardless of how many nodes are in use.
- The SDN beta for Proxmox is recommended if you do not have a physical network that is dedicated for VM/LXC guests.
- A shared filesystem using NFS, Ceph, or GlusterFS is strongly recommended. Otherwise you need to ensure that the image stores (ISO/LXC templates) are EXACTLY the same on all nodes (e.g.
debian-10.0-877889.iso
exists on a share namedpve-img
on all nodes).
Service | Dedicated? | Host Type | CPU | RAM | Disk |
---|---|---|---|---|---|
ATC + Builder | Yes | LXC | 2 | 128-256 MB | 4 GB |
Postgres (Optional) | Yes | LXC/VM/Dedicated | 1 | 128-512 MB | 12 GB |
Radar (Optional) | No | LXC | 1 | 64-128 MB | 4 GB |
The Radar component is special in that it can be installed in the same container as ATC/Builder, or it could be on it's own dedicated instance. The only hard requirement for Radar is that it must have network access to ATC in order to connect with the ATC API.
Ideally, there should be a network configured in Proxmox that is isolated from all other systems on your network. This network will be used for deploying planes. This network should meet the following requirements:
- DHCP server is set up and listening. DNS integration is also recommended.
OR
- A block of at least 6 IPv4 addresses are available for the IPAM module to distribute to new planes.
- If the SDN beta of Proxmox is being used, ensure that all Proxmox nodes enforce the same MTU for the network.
Create an LXC container in Proxmox with at least the values specified in the table above for ATC. If you plan to use the prebuilt packages on GitHub, you must choose Ubuntu or Debian as the OS. If you choose to use DHCP, you MUST have a DNS entry that points to ATC. If you have multiple nodes in your Proxmox cluster, and you have shared storage configured, it would be a good idea to enable HA on the container.
Once your new container has booted, run the following commands:
apt-get update
apt-get install wget
wget <URL_to_deb_from_github_actions>
apt install ./atc-*.deb
It is assumed in the following commands that you are using Ubuntu or Debian. If not, you'll need to substitute the name of your package manager appropriately.
apt-get update
apt-get install git golang make sqlite3
git clone https://github.com/ARMmaster17/Captain.git
cd Captain/ATC
make build
make deb
make install
Configure ATC with the command nano /etc/captain/atc/config.yaml
. See the relevant wiki page for guidance on what to put here. You will also need to run export CAPTAIN_DB=<filename or postgres://...>
Run sudo systemctl start captain
to start ATC. You can run sudo systemctl status captain
to verify that no errors occurred during startup.