v1.2.14featurefix15 updatesCopy link
New
Route one domain to a port in one call.
POST /api/domainsaccepts an optionaltargetPort: it creates a routed project-level domain, or sets the port of an existing one of the same project, without replacing the project's whole endpoint list. A live project is re-routed right away; the domain's verification, certificate and custom proxy config are kept. Refused for a service's route, a static-path domain and a redirect.Host networking for trusted services.
A service can run on the server's own network (
network_mode: host) once the server's operator allows it withsudo synq host-network on. It is off by default, andsynq host-network offturns it off again;synq host-network statusshows the setting and what the running api uses. It is meant for workloads that can't run any other way, such as a media server with a wide UDP port range or a mail relay that must send from the server's own address, and only for images you trust: such a container can reach every service on the server's loopback (the panel's API, the edge's management port, the mail engine) and every container on the server, the panel's Postgres and Redis included. Synq drops NET_RAW from it and refuses NET_ADMIN, NET_RAW and ALL in its capabilities. Once it is on, anyone who can edit a service can use it. While it is on, compose imports, the services API andsynq service syncaccept it.Domains on host-network services.
A domain on a host-network service, or a project domain mapped to its port, routes to the port the service listens on.
Fixes
Migrating from nginx keeps sites built from includes.
synq edge on --migrateandsynq edge migratenow followincludeinside a server block (globs and paths relative to the nginx config directory), so a site whose locations or certificate live in a snippet is carried over instead of skipped.Locked-down hosts are never opened by a migrate.
An nginx site whose
/answers by itself (return 403,deny all) while a few paths are proxied is skipped with a warning naming those paths, instead of being imported as a proxy for every path. A locked sub-path under a proxied site is named in the warnings.JSON bodies in custom proxy config.
A quoted value may now hold braces that pair up, so
return 503 '{"error":"x"}';is accepted.Several hostnames on one service port.
A service's routes can list more than one hostname for the same port (
a.comandb.comon 3000); each gets its own domain row and route. Before, only the first was kept and the rest were dropped without a word.Custom proxy config is never lost by a routing edit.
Adding a hostname that one of the project's services still routes to the project's own domains is refused with the service's name (a deploy leaves it with the service), and a service edit that would drop a hostname holding a saved custom proxy config is refused until that config is cleared.
Edge off is a note, not a warning.
On a server installed with
--edge off, a deploy of a project with custom domains no longer ends "with warnings" under "Some services need attention" or flags the project for a routing retry. The same sentence (edge off, domains activate onsynq edge on) is shown as an informational note with the domains that wait.Container jobs for projects on the panel's own host.
A job that runs inside a service's container (
projectId+serviceId) can now target a project deployed on the server the panel runs on. It answers to that host's "This Server" entry, with the same project and server permissions as any other job there; it was refused with "not deployed to one of your servers".Host networking is refused instead of ignored.
The services API accepted
network_mode: host, stored it, and then deployed the service on the project network anyway. It now refuses it with the reason while host networking isn't allowed. A service that already asks for it fails only its own deploy, with the reason and the way back (set the service'sadvanced.networkModeto null, or removenetwork_modefrom its compose file), and the rest of the stack deploys.No sharing a namespace with Synq's own containers.
network_modeorpidpointing at the edge, the panel's api, dashboard, databases, the mail engine or cloudflared, or at a container on the host's own network while host networking is off, is refused instead of reaching the host's network through another container.Routes never point at Synq's own ports.
A domain can no longer be routed to 127.0.0.1 on the panel's API, dashboard or website port, the edge's management port or the edge's own 80/443, whichever path writes the route.
synq edge on --migrateno longer undoes itself.On an install whose panel already manages itself, the api that
synq edge onrestarts halfway through rolled the takeover back: it stopped the new edge and restarted the old web server. A takeover still in progress is now left to the command running it, and one that was really interrupted is still rolled back.Certificates carried over from the old web server renew.
Certbot certificates a migrate or takeover kept, issued through the old web server's webroot or nginx plugin, failed every renewal in the edge; they now renew through the edge's own challenge listener, and keep renewing that way.