{"id":16375736,"url":"https://github.com/scarsz/marina","last_synced_at":"2025-03-23T03:32:43.651Z","repository":{"id":96859967,"uuid":"403821642","full_name":"Scarsz/Marina","owner":"Scarsz","description":"Yet another project management Discord bot","archived":false,"fork":false,"pushed_at":"2024-07-28T18:52:50.000Z","size":87,"stargazers_count":7,"open_issues_count":1,"forks_count":5,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-18T17:14:04.139Z","etag":null,"topics":["discord-bot","docker","docker-compose","hacktoberfest","jda"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Scarsz.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-09-07T02:57:03.000Z","updated_at":"2024-08-20T00:16:27.000Z","dependencies_parsed_at":null,"dependency_job_id":"460497dc-fd0e-4948-ac18-a3fbb486d797","html_url":"https://github.com/Scarsz/Marina","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Scarsz%2FMarina","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Scarsz%2FMarina/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Scarsz%2FMarina/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Scarsz%2FMarina/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Scarsz","download_url":"https://codeload.github.com/Scarsz/Marina/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245052633,"owners_count":20553162,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["discord-bot","docker","docker-compose","hacktoberfest","jda"],"created_at":"2024-10-11T03:21:57.514Z","updated_at":"2025-03-23T03:32:43.203Z","avatar_url":"https://github.com/Scarsz.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Marina\nYet another project management Discord bot.\n\n# Features\n- [Manages Docker containers on the host machine.](#managing-docker-containers)\n  - Intended for communities that make extensive use of Docker containers to deploy services.\n\n# Managing Docker containers\nThis bot provides a global `/container \u003clist/start/restart/stop/update\u003e \u003ccontainer\u003e` command on Discord.\nContainers on the host machine can be interacted with by Discord users based on bot permissions.\n\n### Example of updating a container named `discordsrv-heads`\n1. User executes `/container update discordsrv-heads`\n2. Bot checks if user has permission to interact with this container, in the following order:\n   1. `docker.container.discordsrv.heads`\n   2. `docker.container.discordsrv`\n   3. `docker.container`\n   4. `docker`\n   - Permission checks are skipped for users defined in the `SUPERUSERS` environment variable\n3. If the user has permission, [update the target container using `containrrr/watchtower`](https://github.com/containrrr/watchtower)\n\nI prefix my Docker containers with `prefix-` for my different services. This works well with the above permission system\nbecause:\n- A group of trusted contributors a certain group of containers can just be granted the `docker.container.[group]`\npermission to have access to manage all of that group's Docker containers\n- Individual permissions can be granted on a per-situation scenario using `docker.container.discordsrv.heads` if a contributor only needed access to `discordsrv-heads`, for example.\n\n# Deployment\n\nSee included [`docker-compose.yml`](https://github.com/Scarsz/Marina/blob/master/docker-compose.yml)\nand [`.env`](https://github.com/Scarsz/Marina/blob/master/example.env) files.\n\n1. Create a new (private) Discord bot at https://discord.com/developers/applications\n2. Build the bot image with `docker build -t scarsz/marina https://github.com/Scarsz/Marina.git`\n   - Optionally uncomment the `build` directive in the included docker-compose.yml to have Compose build the image\n   - Won't be necessary once I get around to adding the bot to a registry\n3. Save [docker-compose.yml](https://github.com/Scarsz/Marina/blob/master/docker-compose.yml) to a fresh directory\n4. Save [example.env](https://github.com/Scarsz/Marina/blob/master/example.env) as .env and fill in your values\n   - `TOKEN` Bot token Marina should use.\n   - `WATCHING`/`PLAYING` Activity status the bot will display on Discord. If unset, defaults to `watching 🚢 ⛵`\n   - `SUPERUSERS` Comma-separated list of user IDs that always pass permission checks within the bot.\n   - `LOGGING_CHANNEL` Channel ID of a logging channel for the bot.\n   - `GITHUB_CLIENT` / `GITHUB_SECRET` GitHub application credentials, used when making GitHub API calls.\n   - `DOCKER_USER` User on host machine that has logged-in registry credentials. **Only necessary when updating containers using private images.**\n     - Used when updating containers as volume mount `/home/DOCKER_USER/.docker/config.json`\n5. Start the stack with `docker-compose up` and ensure bot starts successfully\n   - Optionally start with `docker-compose up -d \u0026\u0026 docker-compose logs -f marina` to be able to Ctrl+C without stopping\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fscarsz%2Fmarina","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fscarsz%2Fmarina","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fscarsz%2Fmarina/lists"}