{"id":29089352,"url":"https://github.com/siralabar/inception","last_synced_at":"2026-04-11T19:03:24.927Z","repository":{"id":297529166,"uuid":"961954538","full_name":"SirAlabar/Inception","owner":"SirAlabar","description":"A Docker-based system administration project that creates a small infrastructure composed of different services (NGINX, WordPress, MariaDB) with Docker containers. Includes bonus implementations of Redis cache, FTP server, static site with Pixi.js, Adminer, and Portainer for container management","archived":false,"fork":false,"pushed_at":"2025-06-05T23:53:43.000Z","size":3229,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-06T00:32:51.916Z","etag":null,"topics":["42school","containers","docker","docker-compose","mariadb","nginx","wordpress"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","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/SirAlabar.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,"zenodo":null}},"created_at":"2025-04-07T12:33:35.000Z","updated_at":"2025-06-05T23:53:46.000Z","dependencies_parsed_at":"2025-06-06T00:32:54.276Z","dependency_job_id":"6e498c02-18b7-4ced-8780-13057a0e7768","html_url":"https://github.com/SirAlabar/Inception","commit_stats":null,"previous_names":["siralabar/inception"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/SirAlabar/Inception","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SirAlabar%2FInception","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SirAlabar%2FInception/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SirAlabar%2FInception/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SirAlabar%2FInception/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SirAlabar","download_url":"https://codeload.github.com/SirAlabar/Inception/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SirAlabar%2FInception/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":262371661,"owners_count":23300591,"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":["42school","containers","docker","docker-compose","mariadb","nginx","wordpress"],"created_at":"2025-06-28T04:01:40.564Z","updated_at":"2025-10-15T23:11:46.904Z","avatar_url":"https://github.com/SirAlabar.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🐳 Inception\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://media3.giphy.com/media/v1.Y2lkPTc5MGI3NjExbmdxdDQzM3hnbTA2cTNtdTR6ejdqMnM4OG9hNXRiMWc1MHBqa3FldyZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/E4jQGE1ewX2dGAOwBR/giphy.gif\" width=\"600\" alt=\"Inception Project\"\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n\u003e A containerized infrastructure project built with Docker 🚀\n\u003c/p\u003e\n\n## 📋 Overview\n\nThis project implements a complete web infrastructure using Docker containers. It creates a small but robust setup with multiple services including NGINX, WordPress, and MariaDB, all running in separate containers with proper networking and volume management.\n\n![Infrastructure Diagram](https://via.placeholder.com/800x400?text=Inception+Infrastructure+Diagram)\n\n## ✨ Features\n\n- 🔒 **NGINX** with TLSv1.3 only, serving as the entry point (port 443)\n- 🌐 **WordPress** with php-fpm running separately from NGINX\n- 💾 **MariaDB** for database management\n- 📊 **Docker volumes** for persistent data storage\n- 🔄 **Automatic container restart** in case of crashes\n\n### 🎯 Bonus Features\n\n- ⚡ **Redis cache** for WordPress performance optimization\n- 📁 **FTP server** pointing to the WordPress volume\n- 🖥️ **Static website** built with Pixi.js (check it out [here](https://github.com/SirAlabar/Alabar_Site_V2))\n- 🛠️ **Adminer** for database management\n- 🐙 **Portainer** for container visualization and management\n\n## 🏗️ Architecture\n\nAll services are properly isolated, each running in its own container. The infrastructure follows best practices for Docker deployment:\n\n- Proper use of environment variables\n- No passwords in Dockerfiles\n- Data persistence through mounted volumes\n- Custom Docker network for inter-container communication\n- Services configured to automatically restart in case of failure\n\n## 🚀 Getting Started\n\n### Prerequisites\n\n- Docker and Docker Compose installed\n- Make utility\n- Git\n\n### Installation\n\n1. Clone the repository:\n   ```bash\n   git clone https://github.com/hluiz-ma/inception.git\n   cd inception\n   ```\n\n2. Configure the environment:\n   ```bash\n   # Update your hosts file\n   echo \"127.0.0.1 hluiz-ma.42.fr\" | sudo tee -a /etc/hosts\n   ```\n\n3. Build and start the containers:\n   ```bash\n   make\n   ```\n\n### Usage\n\nAccess the services through your browser:\n\n- WordPress: https://hluiz-ma.42.fr\n- Static Site: http://hluiz-ma.42.fr:8080\n- Adminer: http://hluiz-ma.42.fr:8081\n- Portainer: http://hluiz-ma.42.fr:9000\n\nFTP access:\n```bash\nftp -p hluiz-ma.42.fr\n# Use the FTP credentials specified in your .env file\n```\n\n## 🛠️ Makefile Commands\n\n- `make`: Build and start all containers\n- `make down`: Stop all containers\n- `make clean`: Stop containers and clean Docker resources\n- `make fclean`: Complete cleanup including volumes\n- `make re`: Rebuild everything from scratch\n\n## 📂 Project Structure\n\n```\nInception/\n├── Makefile              # Build automation\n├── secrets/              # Secret passwords (not in git)\n└── srcs/\n    ├── docker-compose.yml  # Services configuration\n    ├── .env                # Environment variables\n    └── requirements/\n        ├── mariadb/        # MariaDB service\n        ├── nginx/          # NGINX service\n        ├── wordpress/      # WordPress service\n        └── bonus/          # Bonus services\n            ├── redis/\n            ├── ftp/\n            ├── static_site/\n            ├── adminer/\n            └── portainer/\n```\n\n## 📜 Technical Choices\n\n### Why Alpine/Debian?\n\nThis project uses [Alpine/Debian] as the base image for containers due to [reasons for your choice - security, size, compatibility, etc.].\n\n### Why Portainer?\n\nPortainer was chosen as a bonus service because it provides:\n- Visual management of Docker containers, networks, and volumes\n- Resource usage monitoring\n- Easy debugging through log access and terminal connections\n- Excellent educational value for understanding Docker infrastructure\n\n## 📚 Learning Outcomes\n\nThis project demonstrates understanding of:\n- Container virtualization principles\n- Docker and Docker Compose\n- Nginx configuration with SSL\n- WordPress and PHP-FPM setup\n- Database configuration and security\n- Volume management for data persistence\n- Network configuration in containerized environments\n\n## 📝 License\n\nThis project is licensed under the MIT License - see the LICENSE file for details.\n\n## 🧠 Acknowledgments\n\n- 42 School for the project requirements\n- Docker documentation and community\n- All open-source projects used in this infrastructure\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsiralabar%2Finception","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsiralabar%2Finception","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsiralabar%2Finception/lists"}