Skip to content

Installation

  • Python 3.10+
  • openssl (available on most Linux distros)
  • Optional: JDK 11+ for Java beacon compilation
  • Optional: Go 1.21+ for Go beacon compilation
Terminal window
git clone https://github.com/Juguitos/XoloC2.git
cd XoloC2
bash install.sh

The installer will:

  1. Prompt for the HTTPS port (default 8443)
  2. Create a Python virtual environment and install dependencies
  3. Generate a self-signed TLS certificate
  4. Bootstrap the database with a random admin password
  5. Write a start.sh launch script

At the end it prints:

URL: https://0.0.0.0:8443
Username: admin
Password: <random — shown once, must be changed on first login>
Terminal window
bash install.sh --port 443
bash install.sh --port 8443 --host 127.0.0.1
Terminal window
./start.sh

For production deployments, run XoloC2 as a persistent service:

Terminal window
cat > /etc/systemd/system/xoloc2.service << 'EOF'
[Unit]
Description=XoloC2 C2 Server
After=network.target
[Service]
Type=simple
User=root
WorkingDirectory=/opt/XoloC2
Environment=XOLO_TRUST_PROXY=0
ExecStart=/opt/XoloC2/.venv/bin/python3 -m uvicorn server.main:app \
--host 0.0.0.0 \
--port 8443 \
--ssl-keyfile server/certs/key.pem \
--ssl-certfile server/certs/cert.pem \
--log-level warning
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable xoloc2
systemctl start xoloc2

Check logs:

Terminal window
journalctl -u xoloc2 -f