All checks were successful
Deploy server-up (dev) / deploy (push) Successful in 1m16s
Apps onderling verbinden:
- Elke stack draaide als eigen compose-project met een eigen netwerk, waardoor
stacks elkaar niet op naam konden bereiken. Bij installeren staat nu
"Verbinden met andere apps" aan: de stack komt op een gedeeld bridge-netwerk
(SHARED_NETWORK, standaard "serverup") dat op aanvraag wordt aangemaakt.
- compose_transform.add_shared_network() hangt elke service eraan en laat
bestaande netwerken staan, dus het werkt samen met een macvlan-adres.
- Nieuw /api/apps/connectable geeft de geinstalleerde apps met hun
containernamen, zodat de installatiemodal kan laten kiezen.
Kiezen in plaats van typen:
- Een veld met "connect": {"app": "mosquitto", "scheme": "mqtt", "port": 1883}
toont een keuzelijst met wat er al draait, met handmatig invullen als
terugval. Toegepast op zigbee2mqtt -> mosquitto en open-webui -> ollama.
- Is de doel-app nog niet geinstalleerd, dan zegt het veld dat.
Uitleg per instelling:
- Info-icoon per veld opent een blok met de volledige uitleg plus de
standaardwaarde. Uitgeschreven voor de instellingen die de meeste vragen
oproepen (downloadmap vs mediamap, shm_size bij frigate, poort 80 bij caddy,
PUID bij de arr-stack, GPU bij ollama, publiek adres bij wg-easy).
Geavanceerde opties:
- advanced: true op een veld of groep zet het achter een uitklapblok met
teller. Toegepast op wachtwoorden, PUID/PGID, USB-paden en bewaartermijnen
van 28 apps.
- Test bewaakt dat elke app zichtbare velden overhoudt en dat koppelvelden naar
een bestaande app verwijzen.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01C7oLCRYzY5ixJ5Sv8Y8EFb
257 lines
12 KiB
JSON
257 lines
12 KiB
JSON
{
|
||
"_meta": {
|
||
"code": "en",
|
||
"name": "English",
|
||
"flag": "🇬🇧"
|
||
},
|
||
"dashboard": "Dashboard",
|
||
"stacks": "Stacks",
|
||
"app_store": "App Store",
|
||
"images": "Docker Images",
|
||
"audit": "Audit Log",
|
||
"settings": "Settings",
|
||
"modules": "Modules",
|
||
"overview": "Overview of your Docker environment",
|
||
"running": "Running",
|
||
"stopped": "Stopped",
|
||
"start": "Start",
|
||
"stop": "Stop",
|
||
"restart": "Restart",
|
||
"update": "Update",
|
||
"remove": "Remove",
|
||
"install": "Install",
|
||
"save": "Save",
|
||
"saved": "Saved",
|
||
"cancel": "Cancel",
|
||
"close": "Close",
|
||
"search": "Search",
|
||
"loading": "Loading…",
|
||
"no_results": "No results",
|
||
"refresh": "Refresh",
|
||
"add": "Add",
|
||
"delete": "Delete",
|
||
"edit": "Edit",
|
||
"confirm": "Confirm",
|
||
"prune": "Prune",
|
||
"pull": "Pull",
|
||
"clone": "Clone",
|
||
"sync": "Sync",
|
||
"logs": "Logs",
|
||
"backup": "Backup",
|
||
"env_editor": "Edit .env",
|
||
"compose_editor": "Edit compose",
|
||
"paths": "Paths",
|
||
"library_dir": "Library directory",
|
||
"data_dir": "Data directory",
|
||
"backup_dir": "Backup directory",
|
||
"theme": "Theme",
|
||
"language": "Language",
|
||
"git": "Git",
|
||
"docker": "Docker",
|
||
"no_stacks": "No stacks found",
|
||
"no_images": "No images found",
|
||
"no_repos": "No repositories",
|
||
"add_repo": "Add repository",
|
||
"repo_name": "Name",
|
||
"repo_url": "Git URL",
|
||
"repo_branch": "Branch",
|
||
"repo_subdir": "Subdirectory",
|
||
"install_stack": "Install stack",
|
||
"instance_name": "Instance name",
|
||
"instance_hint": "Change for multiple installations",
|
||
"remove_stack": "Remove stack",
|
||
"remove_stack_only": "Stop containers + volumes",
|
||
"remove_all": "Stop + remove all files",
|
||
"prune_images": "Remove all unused images?",
|
||
"confirm_remove_image": "Remove image?",
|
||
"force_remove": "Force removal?",
|
||
"container_restart": "Restart container",
|
||
"container_restart_hint": "Restart the Server Up container",
|
||
"container_restarting": "Container is restarting…",
|
||
"wizard": "Setup Wizard",
|
||
"wizard_open": "Open wizard",
|
||
"wizard_reset": "Run again",
|
||
"wizard_welcome": "Welcome to Server Up",
|
||
"wizard_welcome_sub": "This wizard guides you through first-time setup. All steps are optional.",
|
||
"wizard_paths": "Set paths",
|
||
"wizard_paths_sub": "Where should your Docker projects be stored?",
|
||
"wizard_git": "Git repositories",
|
||
"wizard_git_sub": "Synchronise your stacks and modules.",
|
||
"wizard_done": "All done!",
|
||
"wizard_done_sub": "Setup complete. Change anything later in Settings.",
|
||
"prev": "Previous",
|
||
"next": "Next",
|
||
"finish": "Finish",
|
||
"ready": "Ready",
|
||
"busy": "Busy",
|
||
"done": "Done",
|
||
"error": "Error",
|
||
"optional_modules": "Optional modules",
|
||
"module_repos": "Module repositories",
|
||
"installed": "Installed",
|
||
"available": "Available",
|
||
"synced": "Synced",
|
||
"not_cloned": "Not cloned",
|
||
"auto_saved": "Auto-saved",
|
||
"hide_menu": "Hide menu",
|
||
"show_menu": "Show menu",
|
||
"log": "Log",
|
||
"deleted": "Deleted",
|
||
"duplicate": "Duplicate",
|
||
"builtin": "built-in",
|
||
"strings_count": "translations",
|
||
"language_addon": "Language module",
|
||
"language_addon_hint": "Add extra languages as an add-on. Built-in languages can be duplicated as a starting point, but not edited or removed.",
|
||
"add_language": "Add language",
|
||
"edit_language": "Edit language",
|
||
"lang_code": "Language code",
|
||
"lang_name": "Name",
|
||
"lang_flag": "Flag",
|
||
"search_keys": "Search key or text…",
|
||
"delete_language_confirm": "Are you sure you want to delete this language?",
|
||
"updates": "Updates",
|
||
"update_available": "Update available",
|
||
"up_to_date": "Up to date",
|
||
"check_now": "Check now",
|
||
"current_version": "Current version",
|
||
"latest_version": "Latest release",
|
||
"release_notes": "Release notes",
|
||
"view_release": "View release",
|
||
"update_api_url": "Releases API URL",
|
||
"update_api_hint": "Forgejo/GitHub Releases API returning the latest release. Empty = disabled.",
|
||
"include_prerelease": "Include pre-releases (beta)",
|
||
"login": "Sign in",
|
||
"login_failed": "Sign-in failed",
|
||
"logout": "Sign out",
|
||
"session_expired": "Session expired — please sign in again",
|
||
"setup_title": "Create the first account",
|
||
"setup_hint": "Server Up manages Docker on this machine. Create an administrator account now — until you do, anyone who can reach this page can claim it.",
|
||
"create_account": "Create account",
|
||
"username": "Username",
|
||
"password": "Password",
|
||
"password_min": "Password (min. 10 characters)",
|
||
"password_repeat": "Repeat password",
|
||
"passwords_differ": "The passwords do not match.",
|
||
"security": "Security",
|
||
"logged_in_as": "signed in as {user}",
|
||
"users": "Users",
|
||
"add_user": "Add user",
|
||
"delete_user_confirm": "Delete user {name}?",
|
||
"change_own_password": "Change your password",
|
||
"current_password": "Current password",
|
||
"new_password": "New password",
|
||
"new_password_repeat": "Repeat new password",
|
||
"change": "Change",
|
||
"auth_mode": "How do people sign in?",
|
||
"auth_mode_local": "Local login",
|
||
"auth_mode_proxy": "Reverse proxy",
|
||
"auth_mode_both": "Both",
|
||
"auth_mode_hint": "With a reverse proxy (Authelia, Authentik, Cloudflare Access) the identity comes from a header. Pick 'Both' to test that without losing your local login.",
|
||
"proxy_header": "Identity header",
|
||
"proxy_header_hint": "Usually Remote-User. Make sure your proxy strips this header from incoming requests and sets it itself.",
|
||
"trusted_proxies": "Trusted proxy addresses",
|
||
"trusted_proxies_hint": "One per line, IP or CIDR. The header is only trusted from these addresses — without this list anyone could impersonate an administrator.",
|
||
"proxy_lockout_confirm": "In 'Reverse proxy' mode the local login is disabled. Are you sure your proxy works?",
|
||
"networks": "Networks",
|
||
"networks_hint": "A macvlan or ipvlan network gives a stack its own IP address on your LAN instead of ports on the host. No more port conflicts, and you can firewall per app. Note: the Docker host itself cannot reach macvlan containers without a shim interface.",
|
||
"add_network": "Add network",
|
||
"network": "Network",
|
||
"no_networks": "No networks yet.",
|
||
"delete_network_confirm": "Delete network {name}?",
|
||
"driver": "Driver",
|
||
"host_interface": "Host interface",
|
||
"subnet": "Subnet",
|
||
"gateway": "Gateway",
|
||
"ip_range": "IP range (optional)",
|
||
"ip_range_hint": "Limits the addresses Docker hands out to a block you reserved in your DHCP server. Without a range Docker uses the whole subnet.",
|
||
"next_free": "next free",
|
||
"ports_on_host": "Ports on the host (default)",
|
||
"own_ip": "own IP",
|
||
"ip_address": "IP address",
|
||
"own_ip_hint": "The stack gets this address on your LAN. Port mappings are dropped — the app is reachable on its own port. The Docker host itself cannot reach a macvlan container without a shim interface (see docs/netwerken.md).",
|
||
"no_networks_hint": "Want to give stacks their own IP? Add a network first under Settings → Networks.",
|
||
"generate_value": "Generate a random value",
|
||
"port_taken": "Port {port} is already in use — {suggested} suggested.",
|
||
"channel": "Channel",
|
||
"channel_stable_hint": "Stable releases only.",
|
||
"channel_beta_hint": "Also pre-releases (e.g. v0.5.10-beta1). Useful for testing, less predictable.",
|
||
"update_now": "Update now to v{version}",
|
||
"updating": "Working…",
|
||
"update_confirm": "Update Server Up to {tag}?\n\nThe container will be replaced and unreachable for a few seconds.",
|
||
"update_cannot_apply": "You can still update with a git tag; see docs/updates.md.",
|
||
"update_image": "Image (for updating from the interface)",
|
||
"update_image_hint": "Without a tag. Empty = derive from the running container.",
|
||
"registry_user": "Registry user (optional)",
|
||
"registry_token": "Registry token",
|
||
"registry_token_set": "•••••••• (set)",
|
||
"registry_token_ph": "only for a private registry",
|
||
"registry_token_hint": "Leave empty = unchanged.",
|
||
"last_checked": "Last checked",
|
||
"rollback": "Roll back",
|
||
"previous_version": "Previous version",
|
||
"rollback_button": "Back to this version",
|
||
"rollback_confirm": "Roll back to {tag}?",
|
||
"restarting": "Server Up is restarting…",
|
||
"updated_to": "Updated to v{version}",
|
||
"restart_slow": "Restart is taking a while — please refresh the page",
|
||
"backups": "Backups",
|
||
"no_backups": "No backups yet",
|
||
"restore": "Restore",
|
||
"restore_confirm": "Restore backup {file}?\n\nThe current files of this stack will be replaced and the stack restarted.",
|
||
"delete_backup_confirm": "Delete this backup?",
|
||
"backup_scope_warning": "A backup contains the stack's compose and .env files, not the Docker volumes holding the actual app data. See docs/backups.md.",
|
||
"backup_retention": "Retention",
|
||
"backup_keep": "Backups to keep per stack",
|
||
"backup_max_age": "Maximum age (days, 0 = no limit)",
|
||
"backup_schedule": "Scheduled backups",
|
||
"backup_schedule_off": "Off",
|
||
"backup_schedule_daily": "Daily",
|
||
"backup_schedule_weekly": "Weekly",
|
||
"backup_schedule_hour": "Around which hour",
|
||
"backup_before_update": "Automatically back up before updating a stack",
|
||
"backup_before_remove": "Automatically back up before removing a stack",
|
||
"check_updates": "Check for updates",
|
||
"stack_update_check": "Check daily whether newer images are available",
|
||
"role_admin": "Administrator",
|
||
"role_operator": "Operator",
|
||
"role_viewer": "Read-only",
|
||
"roles_hint": "An administrator may do everything. An operator manages stacks, containers and backups, but not settings, users, repositories or networks. Read-only cannot change anything.",
|
||
"proxy_role": "Role for proxy users",
|
||
"proxy_role_hint": "Anyone signing in through the reverse proxy without their own account gets this role.",
|
||
"no_permission": "Your role does not allow this action",
|
||
"search_apps": "Search apps…",
|
||
"all": "All",
|
||
"detected_networks": "Found on this server",
|
||
"use_this": "Use this",
|
||
"detect_failed": "Automatic detection failed; fill in the details manually.",
|
||
"how_it_fits": "How do subnet, gateway and range relate?",
|
||
"tip_subnet": "the network your server is on, including the prefix length (/24 = 254 addresses). Use exactly the same subnet as your router — otherwise the containers cannot reach anything.",
|
||
"tip_gateway": "your router's address, where outbound traffic goes. Almost always the first address of the subnet, so 192.168.1.1 for 192.168.1.0/24. Leave it empty and the containers get no internet access.",
|
||
"tip_range": "the slice of the subnet Docker may hand out. Pick a block your router does NOT serve via DHCP, or a container will end up with the same address as your phone. The end of the subnet is usually free.",
|
||
"tip_parent": "the network card of your server that carries the LAN. Does not work over Wi-Fi — macvlan requires a wired connection.",
|
||
"tip_example_title": "Example with a router at 192.168.1.1",
|
||
"tip_example": "Subnet 192.168.1.0/24 ← same as your router\nGateway 192.168.1.1 ← your router\nIP range 192.168.1.240/28 ← .240 through .255\n\nSet your router's DHCP pool to 192.168.1.20 – 192.168.1.239 so that\nthose last sixteen addresses are reserved for your containers.",
|
||
"suggest_range": "Suggest a free block",
|
||
"range_result": "{count} addresses available: {first} through {last}",
|
||
"range_helper": "I want a specific range",
|
||
"range_helper_hint": "Docker works with blocks of 2, 4, 8, 16 … addresses starting on a fixed boundary. A wish like '.200 to .254' does not exist as a notation; the closest blocks are listed below.",
|
||
"from": "from",
|
||
"to": "to",
|
||
"range_ruim": "covers all",
|
||
"range_krap": "fits inside",
|
||
"range_count": "{count} addresses",
|
||
"already_added": "already added",
|
||
"detect_empty": "No network with a default route was found on this server. Fill in the details below manually.",
|
||
"wizard_hint": "Run the wizard again to adjust paths and repositories. Your existing stacks are left untouched.",
|
||
"of_which_managed": "of which {n} via Server Up",
|
||
"other_containers": "Other containers",
|
||
"other_containers_hint": "These containers run on this host but do not belong to a stack managed by Server Up — started manually, for example, or from before you began using Server Up. They do count towards the dashboard figures.",
|
||
"this_app": "this app",
|
||
"advanced_options": "Advanced options",
|
||
"what_does_this_do": "What does this setting do?",
|
||
"default_value": "Default",
|
||
"enter_manually": "Enter manually…",
|
||
"no_connectable_app": "No {app} is installed yet. Install it first, or enter the address manually.",
|
||
"connect_apps": "Connect to other apps",
|
||
"connect_apps_hint": "Put this stack on the shared network '{net}' so it can reach other apps by name and vice versa. Without this, every stack stands alone."
|
||
}
|