{"id":27373537,"url":"https://github.com/magalhaesm/inception","last_synced_at":"2026-04-11T19:34:26.135Z","repository":{"id":227362329,"uuid":"727259883","full_name":"magalhaesm/inception","owner":"magalhaesm","description":"A 42 School project that implements a containerized application infrastructure using Docker. Includes NGINX with TLS, WordPress+PHP-FPM, MariaDB, plus bonus services like Redis, FTP, Adminer, and a static Go website.","archived":false,"fork":false,"pushed_at":"2025-03-31T23:34:03.000Z","size":40,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-13T11:15:23.496Z","etag":null,"topics":["42-school","42sp","adminer","cadvisor","containerization","devops","docker","docker-compose","ftp-server","go-web","infrastructure","mariadb","nginx","php-fpm","redis-cache","system-administration","tls","wordpress"],"latest_commit_sha":null,"homepage":"","language":"HTML","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/magalhaesm.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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":"2023-12-04T14:06:10.000Z","updated_at":"2025-03-31T23:41:46.000Z","dependencies_parsed_at":"2024-03-12T23:31:08.300Z","dependency_job_id":"a997509e-b6ec-4f1c-ae6b-4628c26ae3c6","html_url":"https://github.com/magalhaesm/inception","commit_stats":null,"previous_names":["magalhaesm/inception"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/magalhaesm/inception","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/magalhaesm%2Finception","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/magalhaesm%2Finception/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/magalhaesm%2Finception/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/magalhaesm%2Finception/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/magalhaesm","download_url":"https://codeload.github.com/magalhaesm/inception/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/magalhaesm%2Finception/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31693272,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-11T13:07:20.380Z","status":"ssl_error","status_checked_at":"2026-04-11T13:06:47.903Z","response_time":54,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["42-school","42sp","adminer","cadvisor","containerization","devops","docker","docker-compose","ftp-server","go-web","infrastructure","mariadb","nginx","php-fpm","redis-cache","system-administration","tls","wordpress"],"created_at":"2025-04-13T11:15:20.616Z","updated_at":"2026-04-11T19:34:26.109Z","avatar_url":"https://github.com/magalhaesm.png","language":"HTML","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Inception\n\u003e A Docker infrastructure project for 42 School\n\n## 🌎 Language / Idioma\n[🇧🇷 Ver em Português](README_pt-br.md)\n\n## 📋 About the Project\n\nThis project is part of the 42 School curriculum and aims to broaden knowledge of system administration using Docker. The goal is to virtualize several Docker images in a personal virtual machine, setting up a small infrastructure composed of different services under specific rules.\n\nThe infrastructure implements the following requirements:\n\n- Docker containers for:\n  - **NGINX** with TLSv1.2/TLSv1.3\n  - **WordPress + php-fpm**\n  - **MariaDB**\n- Volumes for:\n  - WordPress database\n  - WordPress website files\n- A Docker network to establish connection between containers\n\n## 🏗️ Architecture\n\n```\n                  ┌─────────┐\n                  │   WWW   │\n                  └────┬────┘\n                       │\n                   port 443\n                       │\n                       ▼\n┌─────────────────Docker Network──────────────────┐\n│                                                 │\n│  ┌─────────┐       ┌─────────┐      ┌────────┐  │\n│  │  NGINX  │──9000→│WordPress│─3306→│MariaDB │  │\n│  └─────────┘       │  +PHP   │      └────┬───┘  │\n│       │            └────┬────┘           │      │\n│       │                 │                │      │\n│       │                 │                │      │\n│       ▼                 ▼                ▼      │\n│  ┌──────────────────Volumes───────────────────┐ │\n│  │                                            │ │\n│  │            ┌───────────┐ ┌───────────┐     │ │\n│  │            │WordPress  │ │Database   │     │ │\n│  │            │  Files    │ │           │     │ │\n│  │            └───────────┘ └───────────┘     │ │\n│  │                                            │ │\n│  └────────────────────────────────────────────┘ │\n│                                                 │\n└─────────────────────────────────────────────────┘\n```\n\n## 🚀 Bonus Features\n\nIn addition to the main requirements, the project includes the following bonus features:\n\n- **Redis Cache**: To improve WordPress performance\n- **FTP Server**: Pointing to the WordPress volume\n- **Static Website**: Developed in Go (not in PHP)\n- **Adminer**: Database management interface\n- **cAdvisor**: Container resource monitoring\n\n**Architecture with Bonus Features:**\n\n```mermaid\n%%{ init: { 'graph': { 'curve': 'monotoneX' } } }%%\ngraph TD\n    Web(((WWW)))\n    subgraph HOST\n        subgraph Docker Network\n            C1(MariaDB)\n            C2(WordPress+PHP)\n            C3(NGINX)\n            C4(FTP)\n            C5(Adminer)\n            C6(Website)\n            C7(Cadvisor)\n            C8(Redis)\n        end\n        subgraph Filesystem\n            DB[(Database)]\n            WP[(WordPress)]\n        end\n    end\n\nWeb -. 21 .- C4\nWeb -. 443 .- C3\nC3 -. 9000 .- C2\nC3 -. 8080 .- C6\nC3 -. 8080 .- C7\nC3 -. 8081 .- C5\nC2 -. 3306 .- C1\nC2 -. 6379 .- C8\nC1 --\u003e DB\nC2 \u0026 C4 --\u003e WP\n\nstyle Web fill:#4F81BD,stroke:#1B4F72,stroke-width:2px\n```\n\n## 🛠 Technologies Used\n\n- **Docker and Docker Compose**: Container virtualization and orchestration\n- **Alpine/Debian**: Base images for containers\n- **NGINX**: Web server with HTTPS support\n- **MariaDB**: Database management system\n- **WordPress and PHP-FPM**: CMS and PHP processor\n- **Redis**: In-memory cache system\n- **Go**: Language for the static website\n- **VSFTPD**: FTP server\n- **Adminer**: Web-based database manager\n- **cAdvisor**: Container resource monitoring\n\n## 🔧 How to Use\n\n### Requirements\n\n- Linux or macOS\n- Docker and Docker Compose installed\n- Sudo permissions\n\n### Setup\n\n1. Clone the repository:\n   ```bash\n   git clone https://github.com/magalhaesm/inception.git\n   cd inception\n   ```\n\n2. Configure the environment file:\n   ```bash\n   cp srcs/.env.example srcs/.env\n   # Edit the .env file as needed\n   ```\n\n3. Add an entry to your `/etc/hosts` file:\n   ```\n   127.0.0.1 your-login.42.fr website.your-login.42.fr cadvisor.your-login.42.fr\n   ```\n\n### Commands\n\nThe Makefile provides several useful commands:\n\n```bash\n# Start all services\nmake up\n\n# Stop all services\nmake down\n\n# Start existing services\nmake start\n\n# Stop services without removing them\nmake stop\n\n# Access a container's shell\nmake shell\n\n# Check container status\nmake ps\n\n# View container logs\nmake logs\n\n# Remove all containers and images\nmake clean\n\n# Remove containers, images, and volumes\nmake fclean\n\n# Clean up the entire Docker environment (including volumes)\nmake prune\n```\n\n## 📦 Project Structure\n\n```\ninception/\n├── Makefile            # Scripts to manage the project\n├── srcs/\n│   ├── .env            # Environment variables\n│   ├── docker-compose.yml\n│   └── requirements/\n│       ├── mariadb/\n│       │   ├── conf/\n│       │   ├── Dockerfile\n│       │   └── tools/\n│       ├── nginx/\n│       │   ├── conf/\n│       │   └── Dockerfile\n│       ├── wordpress/\n│       │   ├── Dockerfile\n│       │   └── tools/\n│       └── bonus/\n│           ├── adminer/\n│           ├── cadvisor/\n│           ├── ftp/\n│           ├── redis/\n│           └── website/\n```\n\n## 🔐 Security\n\n- NGINX configured with TLSv1.2 and TLSv1.3 only\n- Environment variables for passwords and sensitive data\n- Secure communication between containers via Docker network\n\n## 📝 Notes\n\n- Containers restart automatically in case of failure\n- Infrastructure access is exclusively through HTTPS (port 443)\n- Passwords and credentials are configured through environment variables\n\n## 📄 License\n\nThis project is under the MIT License. See the [LICENSE](LICENSE) file for more details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmagalhaesm%2Finception","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmagalhaesm%2Finception","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmagalhaesm%2Finception/lists"}