Skip to content

abestaev/inception

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

13 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

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

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors