FoxyFy Server — Installation

Use our automated installer to deploy FFS in seconds.

How to FoxyFy?

FoxyFy Server comes with shell script that installs all required files. It only requires SSH access and basic UNIX knowledge. The installer will do the rest. Starting with FoxyFy is really, really simple. Here’s all you do:

Run the install script

This will download, install and run FFS. FFS will print your machine ID.

Get a license

Send your machine ID along with your license order.

Activate the license

Paste your key into the config file and launch the server.

Start the FFS

Once your are done testing, start FFS as a service 🏁.

That’s it — your site’s officially FoxyFied.

⚡ Quick Install

  1. FFS ships as a single static binary with a config file. The installer auto-detects your OS/CPU, downloads the right build, and sets up everything you need:


  • Installs ffs to /usr/local/bin (or ~/.local/bin if you’re not root)
  • Creates /etc/ffs, plus /etc/ffs/certs & /etc/ffs/acme-cache (0700) & /etc/ffs/log (0755)
  • Fetches the single config from https://foxyfy.net/dist/ffs.conf (keeps your existing one if present)
  • Installs the systemd service at /etc/systemd/system/ffs.service


At the end you’ll get a prompt: Enable and start ffs now? [Y/n]

  • Choose Y to enable the service on boot and start it immediately.
  • Choose n to leave it installed but inactive. You can start later.


No package manager required—just curl (or wget) and bash. Safe to re-run; it only updates the binary and leaves your config in place.

Install tree:

/usr/local/bin/

└─ ffs

/etc/ffs/

├─ ffs.conf

├─ certs/ (0700)

├─ acme-cache/ (0700)

└─ log/ (0755)

/etc/systemd/system/

├─ ffs.service # main unit

└─ ffs.service.d/ # drop-ins

└─ 10-start-pre.conf # extra snippet

Root (recommended)

curl -fsSL https://foxyfy.net/dist/ffs_install.sh | sudo bash

Already root

curl -fsSL https://foxyfy.net/dist/ffs_install.sh | bash

wget variant

wget -qO- https://foxyfy.net/dist/ffs_install.sh | sudo bash

⚡ Manual Install

Binary (Linux / Intel)

sudo curl -fsSL https://foxyfy.net/dist/linux/intel/ffs -o /usr/local/bin/ffs
sudo chmod +x /usr/local/bin/ffs
Adjust the URL for your platform as needed: linux/arm64, mac/intel, or mac/arm64.

Config & directories

sudo install -d -m 0755 /etc/ffs
sudo install -d -m 0700 /etc/ffs/certs
sudo install -d -m 0700 /etc/ffs/acme-cache
sudo install -d -m 0755 /etc/ffs/log
curl -fsSL https://foxyfy.net/dist/ffs.conf | sudo tee /etc/ffs/ffs.conf >/dev/null

sudo chown root:root /etc/ffs/ffs.conf
sudo chmod 644 /etc/ffs/ffs.conf
Mac: sudo chown root:wheel /etc/ffs/ffs.conf.

Verify

ffs --version
ffs -h

🐧 Linux — run as service

Linux – Install

sudo bash -c 'cat > /etc/systemd/system/ffs.service << "EOF"
[Unit]
Description=FoxyFy Server
After=network.target

[Service]
LimitNOFILE=200000
ExecReload=/bin/kill -HUP $MAINPID
ExecStart=/usr/local/bin/ffs
Restart=on-failure
User=root
WorkingDirectory=/etc/ffs

[Install]
WantedBy=multi-user.target
EOF

systemctl daemon-reload
systemctl enable ffs
systemctl restart ffs
systemctl status ffs --no-pager
'
Creates /etc/systemd/system/ffs.service, reloads systemd, enables autostart, and launches the server immediately.

Monitor logs live

sudo journalctl -fu ffs

👉 Note:

systemctl reload ffstriggers a graceful (hot)-reload.

Linux — Update

# Auto-detect CPU (Intel or ARM64) and update FFS
ARCH="$(uname -m)"; case "$ARCH" in x86_64) FLAV=intel;; aarch64|arm64) FLAV=arm64;; *) echo "Unsupported arch: $ARCH"; exit 1;; esac
URL="https://foxyfy.net/dist/linux/$FLAV/ffs"

echo "Downloading $URL ..."
curl -fsSL "$URL" -o /tmp/ffs || { echo "Download failed"; exit 1; }

echo "Installing to /usr/local/bin/ffs ..."
sudo install -m 755 /tmp/ffs /usr/local/bin/ffs && rm -f /tmp/ffs

# If you run FFS unprivileged on :80/:443, re-apply capabilities (lost on replace)
sudo setcap 'cap_net_bind_service=+ep' /usr/local/bin/ffs 2>/dev/null || true

echo "Restarting service (systemd) ..."
sudo systemctl restart ffs

echo "Status:"
sudo systemctl status ffs --no-pager | sed -n '1,20p'
echo ""
echo "Tip: Logs:  sudo journalctl -u ffs -f"

Linux — Uninstall

sudo systemctl disable --now ffs.service 2>/dev/null || true
sudo rm -f /etc/systemd/system/ffs.service
sudo systemctl daemon-reload
sudo systemctl reset-failed 2>/dev/null || true

🍏 Mac – launch daemon

macOS — Install

macOS — Update

# Auto-detect Mac CPU (Intel or Apple Silicon) and update FFS
ARCH="$(uname -m)"; case "$ARCH" in x86_64) FLAV=intel;; arm64) FLAV=arm64;; *) echo "Unsupported arch: $ARCH"; exit 1;; esac
URL="https://foxyfy.net/dist/mac/$FLAV/ffs"
TMP="$(mktemp -t ffs.XXXX)" || exit 1

echo "Downloading $URL ..."
curl -fsSL "$URL" -o "$TMP" || { echo "Download failed"; exit 1; }

echo "Installing to /usr/local/bin/ffs ..."
sudo install -m 755 "$TMP" /usr/local/bin/ffs && rm -f "$TMP"

# (Optional) Clear quarantine if needed on local builds
sudo xattr -dr com.apple.quarantine /usr/local/bin/ffs 2>/dev/null || true

echo "Restarting service (launchd) ..."
sudo launchctl kickstart -k system/ffs

echo "Version:"
/usr/local/bin/ffs --version || true

echo "Tip: Logs (if configured):  sudo tail -f /etc/ffs/log/launchd.log /etc/ffs/log/httpd.log"

macOS - Uninstall

sudo launchctl unload /Library/LaunchDaemons/ffs.plist 2>/dev/null || true
sudo rm -f /Library/LaunchDaemons/ffs.plist
sudo rm -f /usr/local/bin/ffs
# Remove config if you created it:
/usr/bin/sudo rm -rf /etc/ffs

⚡ Uninstall

Uninstall — safe (keeps /etc/ffs)

sudo systemctl disable --now ffs.service 2>/dev/null || true
# If you set capabilities for :80/:443, remove them first:
sudo setcap -r /usr/local/bin/ffs 2>/dev/null || true
sudo rm -f /usr/local/bin/ffs
If you installed as a regular user (no sudo), remove the user binary:
rm -f ~/.local/bin/ffs

Uninstall — full cleanup (removes config, certs, logs)

# ⚠️ This permanently deletes configs, certs, ACME cache, and logs.
sudo systemctl disable --now ffs.service 2>/dev/null || true
sudo rm -f /usr/local/bin/ffs
sudo rm -rf /etc/ffs

Verify removal

command -v ffs || echo \"ffs removed\"