[Unit]
Description=RustFS Object Storage Server
Documentation=https://rustfs.com/docs/
After=network-online.target
Wants=network-online.target
# If you're using a database, you'll need to add the corresponding dependencies
# After=postgresql.service
# Requires=postgresql.service

[Service]
Type=notify
NotifyAccess=main
User=rustfs
Group=rustfs

# working directory
WorkingDirectory=/opt/rustfs

# environment variable configuration and main program (Option 1: Directly specify arguments)
Environment=RUSTFS_ACCESS_KEY=rustfsadmin
Environment=RUSTFS_SECRET_KEY=rustfsadmin
ExecStart=/usr/local/bin/rustfs \
    --address 0.0.0.0:9000 \
    --volumes /data/rustfs/vol1,/data/rustfs/vol2 \
    --console-enable

# environment variable configuration (Option 2: Use environment variables)
# rustfs example file see: `../config/rustfs.env`
EnvironmentFile=-/etc/default/rustfs
ExecStart=/usr/local/bin/rustfs  $RUSTFS_VOLUMES $RUSTFS_OPTS

# service log configuration
LogsDirectory=rustfs
StandardOutput=append:/var/log/rustfs/rustfs.log
StandardError=append:/var/log/rustfs/rustfs-err.log

# resource constraints
LimitNOFILE=1048576
LimitNPROC=32768
TasksMax=infinity

# restart the policy
Restart=always
RestartSec=10s

# graceful exit configuration
TimeoutStartSec=30s
TimeoutStopSec=30s

# security settings
NoNewPrivileges=true
ProtectSystem=full
ProtectHome=true
PrivateTmp=true
PrivateDevices=true
ProtectClock=true
ProtectKernelTunables=true
ProtectKernelModules=true
ProtectControlGroups=true
RestrictSUIDSGID=true
RestrictRealtime=true
ReadWritePaths=/data/rustfs /var/log/rustfs

[Install]
WantedBy=multi-user.target
