Skip to content

Latest commit

 

History

13 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 

Repository files navigation

Inception

This project aims to broaden your knowledge of system administration through the use of Docker technology. You will virtualize several Docker images by creating them in your new personal virtual machine.

🚀 Project Overview

Inception is a multi-container Docker application that sets up a complete WordPress website with a reverse proxy, database, and bonus services for enhanced functionality.

🏗️ Architecture

┌─────────────────┐    ┌─────────────────┐    ┌─────────────────┐
│     Nginx       │    │   WordPress     │    │    MariaDB      │
│   (Port 443)    │◄──►│   (Port 9000)   │◄──►│   (Port 3306)   │
│   SSL/TLS       │    │   PHP-FPM       │    │   Database      │
└─────────────────┘    └─────────────────┘    └─────────────────┘
                                │
                                ▼
                       ┌─────────────────┐
                       │     Redis       │
                       │   (Port 6379)   │
                       │     Cache       │
                       └─────────────────┘
                                │
                                ▼
                       ┌─────────────────┐
                       │   FTP Server    │
                       │   (Port 21)     │
                       │  File Access    │
                       └─────────────────┘

📦 Services

Core Services

  • WordPress - Content Management System
  • MariaDB - Database server
  • Nginx - Reverse proxy with SSL/TLS

Bonus Services

  • Redis - Object cache for WordPress performance
  • FTP Server - File access to WordPress volume
  • Adminer - Web-based database administration tool
  • Static Website - Modern showcase site in HTML/CSS/JavaScript
  • Minecraft Server - Java Edition 1.20.4 game server

🛠️ Quick Start

  1. Clone the repository

    git clone https://github.com/abestaev/inception.git
    cd inception
  2. Create environment file

    cp srcs/.env.example srcs/.env
    # Edit srcs/.env with your configuration
  3. Create secrets directory

    mkdir -p srcs/secrets
    # Add your password files:
    # - mysql_password
    # - mysql_root_password
    # - wordpress_admin_password
    # - redis_password
    # - ftp_password
  4. Start the services

    cd srcs
    docker compose up --build -d
  5. Access the website

🔧 Configuration

Environment Variables

Edit srcs/.env to customize:

  • Domain names
  • Database credentials
  • Admin credentials
  • Ports

Secrets

Place password files in srcs/secrets/:

  • mysql_password - MariaDB user password
  • mysql_root_password - MariaDB root password
  • wordpress_admin_password - WordPress admin password
  • redis_password - Redis password
  • ftp_password - FTP user password

📁 Project Structure

inception/
├── srcs/
│   ├── docker-compose.yml
│   ├── .env
│   ├── secrets/
│   └── requirements/
│       ├── mariadb/          # Database service
│       ├── nginx/            # Reverse proxy
│       ├── wordpress/        # CMS
│       └── bonus/            # Bonus services
│           ├── redis/        # Cache service
│           ├── ftp/          # FTP server
│           └── README.md     # Bonus services documentation
└── README.md

🔐 Security

  • SSL/TLS encryption with self-signed certificates
  • Secrets management through Docker secrets
  • Isolated containers with custom networks
  • No sensitive data in version control (.gitignore configured)

🚀 Features

  • WordPress with PHP 8.2 and FPM
  • MariaDB database with custom configuration
  • Nginx reverse proxy with SSL termination
  • Redis object cache for performance
  • FTP server for file management
  • Docker Compose orchestration
  • Persistent volumes for data storage

📝 Usage

WordPress Admin

FTP Access

  • Host: localhost
  • Port: 21
  • Username: ftpuser
  • Password: (from secrets/ftp_password)

Redis Cache

  • Host: localhost
  • Port: 6379
  • Password: (from secrets/redis_password)

Database Administration (Adminer)

  • URL: http://localhost:8080
  • System: MySQL
  • Server: mariadb
  • Username: wordpress_user
  • Password: (from secrets/mysql_password)
  • Database: wordpress

Static Showcase Website

  • URL: http://localhost:8081
  • Type: Modern responsive website
  • Technologies: HTML5, CSS3, JavaScript ES6
  • Features: Animations, interactive elements, mobile-friendly
  • Content: Project showcase and documentation

Minecraft Game Server

  • Address: localhost:25565
  • Version: Java Edition 1.20.4
  • Game Mode: Survival
  • Difficulty: Normal
  • Max Players: 20
  • Features: PvP enabled, Nether access, command blocks
  • Memory: 2GB allocated

🛠️ Development

Rebuilding Services

docker compose up --build -d [service_name]

Viewing Logs

docker compose logs [service_name]

Stopping Services

docker compose down

📚 Documentation

🤝 Contributing

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Test thoroughly
  5. Submit a pull request

📄 License

This project is part of the 42 School curriculum.

About

This project aims to broaden your knowledge of system administration through the use of Docker technology. You will virtualize several Docker images by creating them in your new personal virtual machine.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages