{"id":20012247,"url":"https://github.com/soofiane262/inception","last_synced_at":"2025-10-06T14:16:05.400Z","repository":{"id":151026221,"uuid":"571576473","full_name":"soofiane262/Inception","owner":"soofiane262","description":"This is a System Administration related project","archived":false,"fork":false,"pushed_at":"2023-04-12T21:12:38.000Z","size":256,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-02T02:19:26.269Z","etag":null,"topics":["docker","docker-compo","system-ad","virtualization"],"latest_commit_sha":null,"homepage":"","language":"Dockerfile","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/soofiane262.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","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":"2022-11-28T12:38:25.000Z","updated_at":"2024-04-09T02:26:50.000Z","dependencies_parsed_at":null,"dependency_job_id":"3f06c706-bf6a-416a-9d7d-0c69a1462294","html_url":"https://github.com/soofiane262/Inception","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/soofiane262/Inception","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/soofiane262%2FInception","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/soofiane262%2FInception/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/soofiane262%2FInception/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/soofiane262%2FInception/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/soofiane262","download_url":"https://codeload.github.com/soofiane262/Inception/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/soofiane262%2FInception/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278622039,"owners_count":26017295,"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","status":"online","status_checked_at":"2025-10-06T02:00:05.630Z","response_time":65,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["docker","docker-compo","system-ad","virtualization"],"created_at":"2024-11-13T07:29:28.266Z","updated_at":"2025-10-06T14:16:05.340Z","avatar_url":"https://github.com/soofiane262.png","language":"Dockerfile","funding_links":[],"categories":[],"sub_categories":[],"readme":"# \u003ccenter\u003eInception - System Administration with Docker\u003c/center\u003e\n\n[![sel-mars's 42 Inception Score](https://badge42.vercel.app/api/v2/cl49y2gyb004909l3hwkwo9dg/project/2898085)](https://github.com/JaeSeoKim/badge42)\n\n## Table of Contents\n\n-   [Introduction](#introduction)\n-   [Infrastructure Setup](#infrastructure-setup)\n-   [Getting Started](#getting-started)\n-   [Usage](#usage)\n    -   [Running the Containers](#running-the-containers)\n    -   [Viewing the Containers](#viewing-the-containers)\n    -   [Stopping the Containers](#stopping-the-containers)\n    -   [Removing the Volumes](#removing-the-volumes)\n    -   [Restarting the Containers](#restarting-the-containers)\n-   [Resources](#resources)\n-   [Authors](#authors)\n-   [Contributing](#contributing)\n-   [License](#license)\n\n### _Introduction_\n\nHello everyone! I'm excited to share with you the project I completed to enhance my system administration skills using Docker. I created a small infrastructure composed of various services that follow specific rules, and worked in a virtual machine using docker-compose to complete the project.\n\nWith Docker, I could run each service in a dedicated container, making it easier to manage and isolate them. I used Dockerfiles to build the containers, with each Docker image having the same name as its corresponding service. My Makefile called these Dockerfiles in the docker-compose.yml file, making it easy to build the Docker images.\n\nDocker provides a lightweight alternative to traditional virtual machines, making it highly portable and easy to move between environments. Docker also takes care of managing the underlying infrastructure, so I didn't have to worry about it.\n\nTo ensure security, I made sure there were no passwords in my Dockerfiles and used environment variables to configure the services. I stored these environment variables in a .env file for better organization.\n\nOverall, this project was an excellent opportunity to learn about Docker's benefits and gain hands-on experience in creating a small infrastructure.\n\n### _Infrastructure Setup_\n\nIn this section, I will describe the various Docker containers that I have set up for my infrastructure. These containers include NGINX with TLSv1.3, WordPress with php-fpm, MariaDB, Adminer, an FTP server connected to the WordPress volume, a static website container, and three containers for visualizing all of the containers status in Grafana. To connect these containers, I have established a docker-network.\n\nThe NGINX container is configured to support only TLSv1.3, which ensures secure communication between clients and the server.\n\nThe WordPress container includes php-fpm, which is installed and configured. It does not include NGINX, as I have set up a separate container (the previous one) for this purpose.\n\nThe MariaDB container provides a database management system for the WordPress website.\n\nTo store the WordPress database, I have set up a volume that is mounted to the MariaDB container.\n\nI have also set up a second volume that contains the WordPress website files.\n\nIn addition to these containers, I have set up an Adminer container, which provides a web-based interface for managing the MariaDB database.\n\nTo connect the FTP server to the WordPress volume, I have bind-mounted the volume to the FTP container.\n\nI have also set up a static website container, which serves as an example of how to run a containerized website that does not require a dynamic content management system like WordPress.\n\nTo monitor the performance of the infrastructure, I have set up three containers for visualizing the data in Grafana. These containers receive data from InfluxDB, which is responsible for storing the performance metrics of the infrastructure. To gather this data, I have set up another container called Telegraf, which gets the container usage data from the docker.sock file.\n\nFinally, to connect all of these containers, I have established a docker-network, which allows them to communicate with each other securely and efficiently.\n\n### _Getting Started_\n\nTo get started with this project, follow these steps:\n\n1.  Clone the repository to your local machine:\n\n```bash\ngit clone https://github.com/soofiane262/Inception.git\n```\n\n2. Navigate to the project directory:\n\n```bash\ncd Inception\n```\n\n3. Create the necessary volumes for the project, build the Docker images and start the Docker containers:\n\n```bash\nmake\n```\n\n5. To stop the containers, run the following command:\n\n```bash\nmake down\n```\n\n### _Usage_\n\n#### _Running the Containers_\n\nTo run the Docker containers, use the following command:\n\n```bash\nmake\n```\n\nThis command will create and start all the containers defined in the srcs/docker-compose.yml file.\n\n#### _Viewing the Containers_\n\nTo view the containers, run the following command:\n\n```bash\nmake ps\n```\n\nThis command will display the status of all the containers defined in the srcs/docker-compose.yml file.\n\n#### _Stopping the Containers_\n\nTo stop the containers, run the following command:\n\n```bash\nmake down\n```\n\nThis command will stop all the containers defined in the srcs/docker-compose.yml file.\n\n#### _Removing the Volumes_\n\n```bash\nmake fclean\n```\n\nThis command will stop and remove all the containers defined in the srcs/docker-compose.yml file, and remove the volumes created by the project.\n\n#### _Restarting the Containers_\n\nTo restart the containers, run the following command:\n\n```bash\nmake re\n```\n\nThis command will remove the volumes, rebuild the containers, and start the containers again.\n\n### _Resources_\n\n-   [Docker](https://docs.docker.com/)\n-   [Dockerfile](https://docs.docker.com/engine/reference/builder/)\n-   [Dockerfile best practices](https://docs.docker.com/develop/develop-images/dockerfile_best-practices/)\n-   [Nginx](https://nginx.org/en/docs/)\n-   [OpenSSL](https://www.openssl.org/docs/)\n-   [Bash](https://www.gnu.org/software/bash/manual/html_node/index.html)\n-   [WordPress CLI](https://wp-cli.org/)\n-   [MariaDB](https://mariadb.com/kb/en/documentation/)\n-   [Adminer](https://www.adminer.org/en/)\n-   [Telegraf](https://docs.influxdata.com/telegraf/v1.18/)\n-   [InfluxDB](https://docs.influxdata.com/influxdb/v1.8/)\n-   [Grafana](https://grafana.com/docs/grafana/latest/setup-grafana/installation/debian/)\n\n## _Authors_\n\nThe `Inception` project was created by [Soufiane El Marsi](https://www.github.com/soofiane262) as part of the common core's curriculum for the [1337 Coding School](https://www.1337.ma/en/)'s System Administration and Networking branches, a coding school located in Morocco, Africa, that is a member of the renowned [42 Network](https://www.42network.org/) of coding schools. The school is also powered by the [Mohammed VI Polytechnic University (UM6P)](https://um6p.ma/), which provides world-class resources and expertise to its students.\n\nAs a member of the [42 Network](https://www.42network.org/), [1337 Coding School](https://www.1337.ma/en/) follows the same innovative and immersive educational model, which is based on project-based learning and peer-to-peer collaboration. This means that students are free to learn at their own pace, and are encouraged to work on real-world projects that challenge and inspire them.\n\nThe school's partnership with [UM6P](https://um6p.ma/) ensures that students have access to the latest technologies and tools, as well as world-class faculty members and experts in the field of computer science. This allows students to gain a comprehensive understanding of coding and computer science, while also developing the practical skills needed to succeed in the tech industry.\n\nOverall, [1337 Coding School](https://www.1337.ma/en/) is a unique and innovative institution that provides an exceptional education in coding and computer science, while also preparing students for success in the rapidly-evolving tech industry.\n\n## _Contributing_\n\nContributions to this project are welcome. To contribute, please follow these steps:\n\n1. Fork the project repository.\n2. Create a new branch for your feature or bug fix.\n3. Make your changes and commit them with descriptive commit messages.\n4. Push your changes to your forked repository.\n5. Create a pull request to the original repository.\n\n### _License_\n\nThis project is licensed under the MIT License - see the [LICENSE](https://github.com/soofiane262/Inception/blob/master/LICENSE.md) file for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsoofiane262%2Finception","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsoofiane262%2Finception","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsoofiane262%2Finception/lists"}