diff --git a/README.md b/README.md index df6cfeb..2d16131 100644 --- a/README.md +++ b/README.md @@ -16,7 +16,7 @@ Namingo is optimally designed for the upcoming ICANN application round, providin **Namingo** has successfully reached its initial completion milestone, thanks to the collective effort and dedication of our community. However, the journey doesn't end here! We are committed to continuously enhancing Namingo to ensure it remains the best in its class. Whether you excel in coding, have an exceptional sense of design, or are bursting with innovative concepts, your contributions are invaluable. Join us in refining and expanding Namingo's capabilities to meet and exceed the ever-evolving needs of our users. -**Namingo** efficiently manages 150,000 domains on a VPS setup (2 cores, 4GB RAM, 100GB SSD) and is compatible with Ubuntu 22.04 LTS and Debian 12, supporting MariaDB/MySQL databases. After successful QA and security assessments, we're expanding our reach. We seek volunteers for testing and creating installation guides for AlmaLinux, Alpine Linux, FreeBSD 14, and Windows, aiming to include both MariaDB/MySQL and PostgreSQL database options. This effort will broaden Namingo's adaptability and ensure it remains a comprehensive domain registry solution. +**Namingo** efficiently manages 150,000 domains on a VPS setup (2 cores, 4GB RAM, 100GB SSD) and is compatible with Ubuntu 22.04/24.04 LTS and Debian 12, supporting MariaDB/MySQL databases. After successful QA and security assessments, we're expanding our reach. We seek volunteers for testing and creating installation guides for AlmaLinux, Alpine Linux, FreeBSD 14, and Windows, aiming to include both MariaDB/MySQL and PostgreSQL database options. This effort will broaden Namingo's adaptability and ensure it remains a comprehensive domain registry solution. ## Features diff --git a/cp/resources/views/partials/footer.twig b/cp/resources/views/partials/footer.twig index 723bc00..55ab282 100644 --- a/cp/resources/views/partials/footer.twig +++ b/cp/resources/views/partials/footer.twig @@ -14,7 +14,7 @@ Namingo
  • - v1.0.0-RC4 + v1.0.0-RC5
  • diff --git a/docs/install.md b/docs/install.md index 5c5660b..eb72385 100644 --- a/docs/install.md +++ b/docs/install.md @@ -6,6 +6,8 @@ As you follow along with this document, it's important to also review the [Confi Once you have completed the installation process, we encourage you to proceed to the [Initial Operation Guide](docs/iog.md) for detailed instructions on how to configure your registry, add registrars, and other essential operational steps. +**To install Namingo on Ubuntu 24.04 LTS with PHP 8.3 and MariaDB 10.11.8, use the automated installer currently provided.** + ## 1. Install the required packages: ```bash diff --git a/docs/install.sh b/docs/install.sh index e9d6114..844bbe3 100644 --- a/docs/install.sh +++ b/docs/install.sh @@ -31,7 +31,7 @@ if [[ -e /etc/os-release ]]; then fi # Proceed if it's Ubuntu 22.04 or Debian 12 -if [[ ("$OS" == "Ubuntu" && "$VER" == "22.04") || ("$OS" == "Debian GNU/Linux" && "$VER" == "12") ]]; then +if [[ ("$OS" == "Ubuntu" && "$VER" == "22.04") || ("$OS" == "Ubuntu" && "$VER" == "24.04") || ("$OS" == "Debian GNU/Linux" && "$VER" == "12") ]]; then # Prompt for details REGISTRY_DOMAIN=$(prompt_for_input "Enter main domain for registry") YOUR_IPV4_ADDRESS=$(prompt_for_input "Enter your IPv4 address") @@ -56,6 +56,15 @@ if [[ ("$OS" == "Ubuntu" && "$VER" == "22.04") || ("$OS" == "Debian GNU/Linux" & curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' -o caddy-stable.gpg.key gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg caddy-stable.gpg.key curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | tee /etc/apt/sources.list.d/caddy-stable.list + elif [[ "$OS" == "Ubuntu" && "$VER" == "24.04" ]]; then + echo "Installing required packages..." + apt update -y + apt install -y apt-transport-https curl debian-archive-keyring debian-keyring software-properties-common ufw + gpg --no-default-keyring --keyring /usr/share/keyrings/ondrej-php.gpg --keyserver keyserver.ubuntu.com --recv-keys 4F4EA0AAE5267A6C + echo "deb [signed-by=/usr/share/keyrings/ondrej-php.gpg] http://ppa.launchpad.net/ondrej/php/ubuntu noble main" | sudo tee /etc/apt/sources.list.d/ondrej-php.list + curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' -o caddy-stable.gpg.key + gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg caddy-stable.gpg.key + curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | tee /etc/apt/sources.list.d/caddy-stable.list else echo "Installing required packages..." apt update -y @@ -70,7 +79,11 @@ if [[ ("$OS" == "Ubuntu" && "$VER" == "22.04") || ("$OS" == "Debian GNU/Linux" & echo "Updating package lists..." apt update -y echo "Installing additional required packages..." + if [[ "$OS" == "Ubuntu" && "$VER" == "24.04" ]]; then + apt install -y bzip2 caddy gettext git gnupg2 net-tools php8.3 php8.3-cli php8.3-common php8.3-curl php8.3-ds php8.3-fpm php8.3-gd php8.3-gmp php8.3-gnupg php8.3-igbinary php8.3-imap php8.3-intl php8.3-mbstring php8.3-opcache php8.3-readline php8.3-redis php8.3-soap php8.3-swoole php8.3-uuid php8.3-xml pv redis unzip wget whois + else apt install -y bzip2 caddy gettext git gnupg2 net-tools php8.2 php8.2-cli php8.2-common php8.2-curl php8.2-ds php8.2-fpm php8.2-gd php8.2-gmp php8.2-gnupg php8.2-igbinary php8.2-imap php8.2-intl php8.2-mbstring php8.2-opcache php8.2-readline php8.2-redis php8.2-soap php8.2-swoole php8.2-uuid php8.2-xml pv redis unzip wget whois + fi # Set timezone to UTC if it's not already currentTimezone=$(timedatectl status | grep "Time zone" | awk '{print $3}') @@ -80,8 +93,13 @@ if [[ ("$OS" == "Ubuntu" && "$VER" == "22.04") || ("$OS" == "Debian GNU/Linux" & fi # Edit php.ini files + if [[ "$OS" == "Ubuntu" && "$VER" == "24.04" ]]; then + phpIniCli='/etc/php/8.3/cli/php.ini' + phpIniFpm='/etc/php/8.3/fpm/php.ini' + else phpIniCli='/etc/php/8.2/cli/php.ini' phpIniFpm='/etc/php/8.2/fpm/php.ini' + fi echo "Updating PHP configuration..." for file in "$phpIniCli" "$phpIniFpm"; do @@ -96,12 +114,21 @@ if [[ ("$OS" == "Ubuntu" && "$VER" == "22.04") || ("$OS" == "Debian GNU/Linux" & edit_php_ini "$file" "memory_limit" "512M" done + if [[ "$OS" == "Ubuntu" && "$VER" == "24.04" ]]; then + edit_php_ini "/etc/php/8.3/mods-available/opcache.ini" "opcache.jit" "1255" + edit_php_ini "/etc/php/8.3/mods-available/opcache.ini" "opcache.jit_buffer_size" "100M" + else edit_php_ini "/etc/php/8.2/mods-available/opcache.ini" "opcache.jit" "1255" edit_php_ini "/etc/php/8.2/mods-available/opcache.ini" "opcache.jit_buffer_size" "100M" + fi # Restart PHP-FPM service - echo "Restarting PHP 8.2-FPM service..." + echo "Restarting PHP FPM service..." + if [[ "$OS" == "Ubuntu" && "$VER" == "24.04" ]]; then + systemctl restart php8.3-fpm + else systemctl restart php8.2-fpm + fi echo "PHP configuration update complete!" #if [ "$DB_TYPE" == "MariaDB" ]; then @@ -120,6 +147,19 @@ if [[ ("$OS" == "Ubuntu" && "$VER" == "22.04") || ("$OS" == "Debian GNU/Linux" & Suites: jammy Components: main main/debug Signed-By: /etc/apt/keyrings/mariadb-keyring.pgp +EOF + elif [[ "$OS" == "Ubuntu" && "$VER" == "24.04" ]]; then + cat > /etc/apt/sources.list.d/mariadb.sources << EOF + # MariaDB 11.4 repository list - created 2024-07-23 18:24 UTC + # https://mariadb.org/download/ + X-Repolib-Name: MariaDB + Types: deb + # deb.mariadb.org is a dynamic mirror if your preferred mirror goes offline. See https://mariadb.org/mirrorbits/ for details. + # URIs: https://deb.mariadb.org/11.4/ubuntu + URIs: https://fastmirror.pp.ua/mariadb/repo/11.4/ubuntu + Suites: noble + Components: main main/debug + Signed-By: /etc/apt/keyrings/mariadb-keyring.pgp EOF else cat > /etc/apt/sources.list.d/mariadb.sources << EOF @@ -137,7 +177,11 @@ EOF fi apt-get update + if [[ "$OS" == "Ubuntu" && "$VER" == "24.04" ]]; then + apt install -y mariadb-client mariadb-server php8.3-mysql +else apt install -y mariadb-client mariadb-server php8.2-mysql +fi echo "Please follow the prompts for secure installation of MariaDB." mysql_secure_installation @@ -210,6 +254,81 @@ EOF BIND_LINE=$(generate_bind_line $YOUR_IPV4_ADDRESS $YOUR_IPV6_ADDRESS) # Update Caddyfile + if [[ "$OS" == "Ubuntu" && "$VER" == "24.04" ]]; then + cat > /etc/caddy/Caddyfile << EOF + rdaptest.$REGISTRY_DOMAIN { + $BIND_LINE + reverse_proxy localhost:7500 + encode gzip + file_server + tls $YOUR_EMAIL + header -Server + header * { + Referrer-Policy "no-referrer" + Strict-Transport-Security max-age=31536000; + X-Content-Type-Options nosniff + X-Frame-Options DENY + X-XSS-Protection "1; mode=block" + Content-Security-Policy "default-src 'none'; object-src 'none'; base-uri 'self'; frame-ancestors 'none'; img-src https:; font-src 'self'; style-src 'self' 'unsafe-inline'; script-src 'none'; form-action 'self'; worker-src 'none'; frame-src 'none';" + Feature-Policy "accelerometer 'none'; autoplay 'none'; camera 'none'; encrypted-media 'none'; fullscreen 'self'; geolocation 'none'; gyroscope 'none'; magnetometer 'none'; microphone 'none'; midi 'none'; payment 'none'; picture-in-picture 'self'; usb 'none';" + Permissions-Policy: accelerometer=(), autoplay=(), camera=(), encrypted-media=(), fullscreen=(self), geolocation=(), gyroscope=(), magnetometer=(), microphone=(), midi=(), payment=(), picture-in-picture=(self), usb=(); + } + } + + whoistest.$REGISTRY_DOMAIN { + $BIND_LINE + root * /var/www/whois + encode gzip + php_fastcgi unix//run/php/php8.3-fpm.sock + file_server + tls $YOUR_EMAIL + header -Server + header * { + Referrer-Policy "no-referrer" + Strict-Transport-Security max-age=31536000; + X-Content-Type-Options nosniff + X-Frame-Options DENY + X-XSS-Protection "1; mode=block" + Content-Security-Policy: default-src 'none'; object-src 'none'; base-uri 'self'; frame-ancestors 'none'; img-src https:; font-src 'self'; style-src 'self' 'unsafe-inline' https://cdnjs.cloudflare.com; script-src 'none'; form-action 'self'; worker-src 'none'; frame-src 'none'; + Feature-Policy "accelerometer 'none'; autoplay 'none'; camera 'none'; encrypted-media 'none'; fullscreen 'self'; geolocation 'none'; gyroscope 'none'; magnetometer 'none'; microphone 'none'; midi 'none'; payment 'none'; picture-in-picture 'self'; usb 'none';" + Permissions-Policy: accelerometer=(), autoplay=(), camera=(), encrypted-media=(), fullscreen=(self), geolocation=(), gyroscope=(), magnetometer=(), microphone=(), midi=(), payment=(), picture-in-picture=(self), usb=(); + } + } + + cptest.$REGISTRY_DOMAIN { + $BIND_LINE + root * /var/www/cp/public + php_fastcgi unix//run/php/php8.3-fpm.sock + encode gzip + file_server + tls $YOUR_EMAIL + header -Server + log { + output file /var/log/caddy/access.log + format console + } + log { + output file /var/log/caddy/error.log + level ERROR + } + # Adminer Configuration + route /adminer.php* { + root * /usr/share/adminer + php_fastcgi unix//run/php/php8.3-fpm.sock + } + header * { + Referrer-Policy "same-origin" + Strict-Transport-Security max-age=31536000; + X-Content-Type-Options nosniff + X-Frame-Options DENY + X-XSS-Protection "1; mode=block" + Content-Security-Policy: default-src 'none'; object-src 'none'; base-uri 'self'; frame-ancestors 'none'; img-src https:; font-src 'self'; style-src 'self' 'unsafe-inline' https://rsms.me; script-src 'self' 'unsafe-inline' https://cdnjs.cloudflare.com/ajax/libs/xlsx/0.18.5/; form-action 'self'; worker-src 'none'; frame-src 'none'; + Feature-Policy "accelerometer 'none'; autoplay 'none'; camera 'none'; encrypted-media 'none'; fullscreen 'self'; geolocation 'none'; gyroscope 'none'; magnetometer 'none'; microphone 'none'; midi 'none'; payment 'none'; picture-in-picture 'self'; usb 'none';" + Permissions-Policy: accelerometer=(), autoplay=(), camera=(), encrypted-media=(), fullscreen=(self), geolocation=(), gyroscope=(), magnetometer=(), microphone=(), midi=(), payment=(), picture-in-picture=(self), usb=(); + } + } +EOF +else cat > /etc/caddy/Caddyfile << EOF rdap.$REGISTRY_DOMAIN { $BIND_LINE @@ -283,6 +402,7 @@ EOF } } EOF +fi systemctl enable caddy systemctl restart caddy