[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-8698":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":16,"stars7d":16,"stars30d":17,"stars90d":16,"forks30d":16,"starsTrendScore":16,"compositeScore":18,"rankGlobal":10,"rankLanguage":10,"license":19,"archived":20,"fork":20,"defaultBranch":21,"hasWiki":20,"hasPages":20,"topics":22,"createdAt":10,"pushedAt":10,"updatedAt":33,"readmeContent":34,"aiSummary":35,"trendingCount":16,"starSnapshotCount":16,"syncStatus":15,"lastSyncTime":36,"discoverSource":37},8698,"Yacht","Yacht-sh\u002FYacht","Yacht-sh","A web interface for managing docker containers with an emphasis on templating to provide 1 click deployments. Think of it like a decentralized app store for servers that anyone can make packages for.","",null,"Vue",3857,171,53,2,0,5,28.71,"Creative Commons Attribution 4.0 International",false,"master",[23,24,25,26,27,28,29,30,31,32],"appstore","docker","docker-deployment","flask","hacktoberfest","jwt-authentication","python","vuejs","webinterface","yacht","2026-06-12 02:01:57","![logo](https:\u002F\u002Fraw.githubusercontent.com\u002Fyacht-sh\u002Fyacht\u002Fmaster\u002Freadme_media\u002FYacht_logo_1_dark.png \"templates\")\n\n[![Open Collective](https:\u002F\u002Fimg.shields.io\u002Fopencollective\u002Fall\u002Fselfhostedpro.svg?color=%2341B883&logoColor=%2341B883&style=for-the-badge&label=Supporters&logo=open%20collective)](https:\u002F\u002Fopencollective.com\u002Fselfhostedpro \"please consider helping me by either donating or contributing\")\n\n## Yacht\n\nYacht is a container management UI with a focus on templates and 1-click deployments.\n\nThe current `develop` branch supports two host management modes:\n\n- direct Docker API hosts added manually in the UI\n- agent-managed hosts where a `yacht-agent` container connects back to the main Yacht server\n\n## Project Status\n\nThis application had gone unmaintained for a while. The current work on `develop` is focused on bringing dependencies, workflows, and security posture back up to date.\n\nThe rewrite effort is being explored in [Yacht-sh\u002Fyacht-nuxt](https:\u002F\u002Fgithub.com\u002FYacht-sh\u002Fyacht-nuxt).\n\nThe installation docs currently live at [dev.yacht.sh](https:\u002F\u002Fdev.yacht.sh).\n\nRepo-local documentation now lives in [`docs\u002F`](.\u002Fdocs\u002FREADME.md).\nOperational wiki pages for the current `develop` branch live in [`wiki\u002F`](.\u002Fwiki\u002FHome.md).\n\n## Demo\n\n![Tempaltes](https:\u002F\u002Fraw.githubusercontent.com\u002Fyacht-sh\u002Fyacht\u002Fmaster\u002Freadme_media\u002FYacht-Demo.gif \"templates\")\n\n## Installation\n\nCurrently only Linux has been verified as working, but Windows support is still being evaluated.\n\nInstallation documentation can be found [here](https:\u002F\u002Fdev.yacht.sh\u002Fdocs\u002FInstallation\u002FInstall).\n\nCheck out the getting started guide if this is the first time you've used Yacht: [dev.yacht.sh\u002Fdocs\u002FInstallation\u002FGetting_Started](https:\u002F\u002Fdev.yacht.sh\u002Fdocs\u002FInstallation\u002FGetting_Started)\n\n**We can also be found on Linode**\n\n[`\u003Cimg src=\"https:\u002F\u002Fwww.linode.com\u002Fwp-content\u002Fuploads\u002F2021\u002F01\u002FLinode-Logo-Black.svg\" width=\"200\" >`](https:\u002F\u002Fwww.linode.com\u002Fmarketplace\u002Fapps\u002Fselfhostedpro\u002Fyacht\u002F)\n\n## Agent Architecture\n\nThe main Yacht container is the control plane. It hosts the web UI, API, auth, and database.\n\nRemote Docker hosts can run a separate `yacht-agent` container that:\n\n- mounts the local Docker socket\n- registers with the main Yacht server using a shared enrollment token\n- keeps host inventory in sync\n- executes container actions locally after the server queues a job\n\nThis avoids exposing the remote Docker API directly when you do not want to.\n\nCurrent agent-backed write support on `develop` covers container actions:\n\n- `start`\n- `stop`\n- `restart`\n- `kill`\n- `remove`\n\n## Agent Deployment\n\nSet `AGENT_ENROLLMENT_TOKEN` on the main Yacht server first. The agent must use the same token through `YACHT_AGENT_ENROLLMENT_TOKEN`.\n\nExample agent deployment:\n\n```yaml\nservices:\n  yacht-agent:\n    image: ghcr.io\u002Fyacht-sh\u002Fyacht-agent:dev-latest\n    container_name: yacht-agent\n    restart: unless-stopped\n    environment:\n      YACHT_SERVER_URL: https:\u002F\u002Fyacht.example.com\n      YACHT_AGENT_ENROLLMENT_TOKEN: replace-with-shared-enrollment-token\n      YACHT_AGENT_NAME: edge-docker-01\n    volumes:\n      - \u002Fvar\u002Frun\u002Fdocker.sock:\u002Fvar\u002Frun\u002Fdocker.sock\n      - yacht-agent-config:\u002Fconfig\n\nvolumes:\n  yacht-agent-config:\n```\n\nAgent-managed hosts self-register. You do not create them manually from the Hosts form.\n\n## Features So Far\n\n- Vuetify UI Framework\n- Basic Container Management\n- Template Framework\n- Easy Template Updating\n- Centralized settings for volume management and similar QOL functionality.\n- Docker-Compose Compatibility\n- Advanced Container Management (Edit\u002FModify)\n\n## Planned Features\n\n- Container Monitoring\n- Easy access to container CLI\n- User Management\n- Scheduled Jobs\n\n_If you want something that's not planned please open a feature request issue and we'll see about getting it added._\n\n## Templating\n\nCurrently Yacht is compatible with Portainer templates. You'll add a template URL in the \"Add Template\" settings. The template will be read, separated into apps, and imported into the database. The apps associated with the templates are linked via a db relationship so when the template is removed, so are the apps associated with it. We store the template URL as well so we can enable updating templates with a button press.\n\nWe recommend starting with:\n\n```\nhttps:\u002F\u002Fraw.githubusercontent.com\u002Fwickedyoda\u002Fselfhosted_templates\u002Fyacht\u002FTemplate\u002Ftemplate.json\n```\n\nIn templates you are able to define variables (starting with `!`) to have them automatically replaced by whatever variable the user has set in their server settings. For example, `!config` will be replaced by `\u002Fyacht\u002FAppData\u002FConfig` by default.\n\n## Notes for ARM devices\n\nIf you're on ARM and graphs aren't showing up add the following to your `cmdline.txt`:\n\n```\ncgroup_enable=cpuset cgroup_enable=memory cgroup_memory=1\n```\n\n## Supported Environment Variables\n\nYou can utilize the following environment variables in Yacht. None of them are mandatory.\n\n| Variable | Description |\n| ------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| PUID | Set userid that the container will run as. |\n| PGID | Set groupid that the container will run as. |\n| SECRET_KEY | Setting this to a random string ensures you won't be logged out in between reboots of Yacht. |\n| ADMIN_EMAIL | This sets the email for the default Yacht user. |\n| AGENT_ENROLLMENT_TOKEN | Shared secret used by `yacht-agent` containers when they first register with the main Yacht server. |\n| DISABLE_AUTH | This disables authentication on the backend of Yacht. It's not recommended unless you're using something like Authelia to manage authentication. |\n| DATABASE_URL | If you want to have Yacht use a database like SQL instead of the built in sqlite, you can put that info here in the following format: `postgresql:\u002F\u002Fuser:password@postgresserver\u002Fdb` |\n| COMPOSE_DIR | This is the path inside the container which contains your folders that have docker compose projects. (`compose` tag only) |\n\n## Notes for installing Docker and Yacht on WSL2 platform under Windows\n\nIf you're running under WSL2 inside Windows, because of the difference in how permissions are handled, you're essentially inside a Linux machine accessing a Windows file system. You will need to run this after installation before adding the Yacht container:\n\n```bash\nsudo usermod -aG docker $USER\n```\n\nAdditional information about this can be found in the [Post-installation steps for Linux](https:\u002F\u002Fdocs.docker.com\u002Fengine\u002Finstall\u002Flinux-postinstall\u002F)\n\n## Update button not working?\n\n_If the built in update button isn't working for you try the following command:_\n\n```\ndocker run --rm -d -v \u002Fvar\u002Frun\u002Fdocker.sock:\u002Fvar\u002Frun\u002Fdocker.sock containrrr\u002Fwatchtower:latest --cleanup --run-once \u003Ccontainer-name>\n```\n\n## License\n\n[Creative Commons Attribution 4.0 International License](LICENSE.md)\n","Yacht 是一个用于管理 Docker 容器的 Web 界面，强调通过模板提供一键部署功能，类似于一个面向服务器的去中心化应用商店。其核心功能包括直接 Docker API 主机管理和代理管理模式，支持用户自定义包。技术上，Yacht 采用 Vue.js 构建前端界面，后端使用 Flask 和 JWT 认证，并且具有 agent 架构来远程管理 Docker 主机，避免直接暴露 Docker API。适合需要简化容器部署流程、提高运维效率的企业或个人开发者在 Linux 环境下使用。","2026-06-11 03:19:22","top_language"]