{"id":13542519,"url":"https://github.com/tomMoulard/make-my-server","last_synced_at":"2025-04-02T10:30:57.545Z","repository":{"id":39644861,"uuid":"185955948","full_name":"tomMoulard/make-my-server","owner":"tomMoulard","description":"Docker Compose with Traefik and lots of services","archived":false,"fork":false,"pushed_at":"2024-05-01T20:48:34.000Z","size":505,"stargazers_count":527,"open_issues_count":2,"forks_count":66,"subscribers_count":15,"default_branch":"master","last_synced_at":"2025-04-01T04:44:43.676Z","etag":null,"topics":["bitwarden","docker","docker-compose","elk","gitlab","grafana","jupyter-notebook","mastodon","nextcloud","nginx","peertube","portainer","radarr","rocketchat","self-hosted","tor","traefik","transmission","wordpress"],"latest_commit_sha":null,"homepage":"https://tom.moulard.org","language":"Ruby","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/tomMoulard.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","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},"funding":{"github":"tommoulard"}},"created_at":"2019-05-10T09:04:12.000Z","updated_at":"2025-03-30T10:51:02.000Z","dependencies_parsed_at":"2023-12-13T06:35:31.384Z","dependency_job_id":"3d435e81-53a2-4b1f-b988-976b7782fc08","html_url":"https://github.com/tomMoulard/make-my-server","commit_stats":{"total_commits":356,"total_committers":6,"mean_commits":"59.333333333333336","dds":0.199438202247191,"last_synced_commit":"0782ede3483f53bb2fd0cd754cc41154419b68f3"},"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tomMoulard%2Fmake-my-server","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tomMoulard%2Fmake-my-server/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tomMoulard%2Fmake-my-server/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tomMoulard%2Fmake-my-server/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tomMoulard","download_url":"https://codeload.github.com/tomMoulard/make-my-server/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246796836,"owners_count":20835454,"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":["bitwarden","docker","docker-compose","elk","gitlab","grafana","jupyter-notebook","mastodon","nextcloud","nginx","peertube","portainer","radarr","rocketchat","self-hosted","tor","traefik","transmission","wordpress"],"created_at":"2024-08-01T10:01:09.463Z","updated_at":"2025-04-02T10:30:57.011Z","avatar_url":"https://github.com/tomMoulard.png","language":"Ruby","funding_links":["https://github.com/sponsors/tommoulard"],"categories":["Ruby","Crater","wordpress"],"sub_categories":[],"readme":"# Server configuration\n[![Discord](https://img.shields.io/discord/861623516142501898)](https://discord.gg/zQV6m9Jk6Z)\n\nYour (my) own server configuration, managed by docker-compose, with\ncomprehensive default configuration.\n\n## Setup\nIF you are using [docker compose version \u003c2.20](https://docs.docker.com/compose/multiple-compose-files/include/),\nyou need to use the following bash command to use this project:\n```bash\ndocker-compose ()\n{\n    docker-compose $(find -name 'docker-compose.*.yml' -type f -printf '%p\\t%d\\n'  2\u003e/dev/null | sort -n -k2 | cut -f 1 | awk '{print \"-f \"$0}') $@\n}\n```\n\n### Run\n```bash\nSITE=tom.moulard.org docker-compose up -d\n```\n\nNow you have your own server configuration.\n\nTo be a little more consistent with the management, you can use a `.env` file\nand do:\n```bash\ncp .env.default .env\n```\n\nAnd edit the `.env` file to use the correct configuration.\n\nThe `docker-compose` function gather all docker-compose files in order to have\nthe whole configuration in one place (see `docker-compose config`).\n\n### Tear down\n```bash\ndocker-compose down\n```\n\n### Services list\nThere **should** be only one service by folder:\nFor example, le folder `traefik/` contains all the necessary configuration to\nrun the `traefik` service.\n\nThus each folder represent an available service.\n\nThe directory must follow the following architecture:\n```\nservice/\n├── conf\n│   └── ...\n├── data\n│   └── ...\n├── docker-compose.servicename.yml\n├── logs\n│   ├── access.log\n│   └── error.log\n└── README.md\n```\n\nIf the service you are adding can use volumes:\n - `data/`, is where to store to service data\n - `conf/`, is where to store to service configuration\n - `logs/`, is where to store to service logs (others than Docker logs)\n\nFeel free to do a Pull Request to add your ideas.\n\n[more ideas](https://github.com/awesome-selfhosted/awesome-selfhosted)\n\n## Configuration\nDon't forget to change:\n\n - db passwords (might not be needed since they are beyond the reverse proxy)\n - VPN secrets (if none provided, they are generated directly).\n\nConfiguration files are: `docker-compose.yml`, `nginx.conf`\n\nTo set the password:\n```bash\necho \"USERS=$(htpasswd -nB $USER)\" \u003e\u003e .env\n```\n\nYou can add a new set of credentials by editing the .env file like\n```env\nUSERS=toto:pass,tata:pass, ...\n```\n\nThe `.env.default` is generated using this command:\n```bash\ngrep '${' **/docker-compose.*.yml | sed \"s/.*\\${\\(.*\\)}.*/\\1/g\" | cut -d\":\" -f 1 | sort -u | sort | xargs -I % echo \"%=\" \u003e\u003e .env.default\n```\n\n### For local developments\nEdit the file `/etc/hosts` to provide the reverse proxy with good URLs.\n\nFor example, adding this in your `/etc/hosts` will allow to run and debug the\nTraefik service locally:\n```bash\n127.0.0.1   traefik.moulard.org\n```\n\n### Scaling up\n```bash\ndocker-compose scale nginx=2\n```\n\n## Tests\n\n### Lint\n\n! Warning: This is enforced for all PRs.\n\nWe are using yamllint to lint our yaml files.\nYou can install it by looking at the [official\ndocumentation](https://yamllint.readthedocs.io/en/stable/quickstart.html#installation).\n\nOnce installed, you can run the following command to lint all the yaml files:\n```bash\nyamllint .\n```\n\n### docker-compose config\n\n! Warning: This is enforced for all PRs.\n\nYou can run the following command to check that the docker-compose files are\ncorrectly written:\n```bash\n./test.sh\n```\n\nIt tests that:\n\n - all docker-compose files are valid\n - all docker-compose files are parsable\n - all docker-compose files are consistent with the test_config.yml file\n - all environment variables are set inside the `.env.default` file\n\nOnce this shell scritp is run, if the tests failes, you can see a bunch of\nmodified files (e.g., `test_config.yml`) that indicates what is wrong.\n\nNote that the GitHub Action will run this script for you, and provides a\n`patch.patch` file that **should** solve most of your issues.\n\n# Authors\nMain author:\n - [Tom](http://tom.moulard.org)\n\nGitlab helper:\n - [michel_k](mailto:thomas.michelot@epita.fr)\n\nDiscord MusicBot/minecraft:\n - [huvell_m](mailto:martin.huvelle@epita.fr),\nsee PR [#6](https://github.com/tomMoulard/make-my-server/pull/6)\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FtomMoulard%2Fmake-my-server","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FtomMoulard%2Fmake-my-server","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FtomMoulard%2Fmake-my-server/lists"}