Specifikace služby Systemd
ID jednotky služby pochází z config.ini.system_id:
{
"system_id": "<system_id>"
}
Výsledná systémová služba musí být:
<system_id>.service
Uložená v instalačním adresáři aplikace:
/usr/local/<app_id>/init.d/<system_id>.service
Standardní soubor služby:
Standardní soubor služby (se zesílením zabezpečení):
[Unit]
Description=<service_description>
After=network.target
StartLimitBurst=5
StartLimitIntervalSec=60
[Service]
Type=simple
User=<appid>
Group=<appid>
WorkingDirectory=/usr/local/<appid>
ExecStart=/usr/local/<appid>/bin/<binary_name>
EnvironmentFile=/usr/local/<appid>/<appid>.env
TimeoutStartSec=30
TimeoutStopSec=10
AmbientCapabilities=CAP_NET_BIND_SERVICE
NoNewPrivileges=true
ProtectSystem=strict
ProtectHome=true
ReadWritePaths=/var/lib/<appid> /var/log/<appid>
LimitNOFILE=65536
[Install]
WantedBy=multi-user.target
Referenční příručka direktiv systemd:
| Direktiva | Hodnota | Povinná | Popis |
|---|---|---|---|
User | <appid> | ✅ Ano | Spusťte službu jako vyhrazeného uživatele bez oprávnění root |
Group | <appid> | ✅ Ano | Spusťte službu s vyhrazenou skupinou |
WorkingDirectory | /usr/local/<appid> | ✅ Ano | Pracovní adresář služby |
NoNewPrivileges | true | ✅ Ano | Zabraňuje eskalaci oprávnění |
ProtectSystem | strict | ✅ Ano | Připojí /usr, /boot, /etc jako pouze pro čtení |
ProtectHome | true | ✅ Ano | Skryje adresář /home |
TimeoutStartSec | 30 | ✅ Ano | Časový limit spuštění služby (sekundy) |
TimeoutStopSec | 10 | ✅ Ano | Časový limit řádného zastavení (sekundy) |
AmbientCapabilities | CAP_NET_BIND_SERVICE | Podmíněně | Potřebné pouze při vázání na porty nižší než 1024 |
ReadWritePaths | /var/lib/<appid> /var/log/<appid> | ✅ Ano | Výslovně deklarujte zapisovatelné cesty |
LimitNOFILE | 65536 | Doporučeno | Limit počtu otevřených souborů |
StartLimitBurst | 5 | Doporučeno | Maximální počet restartů v rámci intervalu |
StartLimitIntervalSec | 60 | Doporučeno | Interval limitu restartů (sekundy) |
Důležité
Konfigurační soubor jednotky služby nesmí konfigurovat parametry Restart a RestartSec. Životní cyklus spuštění, zastavení a restartu aplikace je jednotně řízen App Center TOS. Automatické strategie restartu nakonfigurované vývojářem mohou kolidovat s logikou správy platformy a vést k nekonzistentním stavům aplikace. StartLimitBurst a StartLimitIntervalSec jsou zachovány a nejsou ovlivněny.