aws ec2 run-instances \ --instance-type t4g.small \ --image-id ami-0e15cd9cd8e225753 \ --security-groups MySecurityGroup \ --key-name My-key-pair --credit-specification "CpuCredits=standard"
TCP
21,22,25,53,80,110,143,443,465,587,993,995,4190,8080,8081,40110:40210
UDP
53
touch /etc/rspamd/local.d/history_redis.conf
servers = localhost:6379; nrows = 450; key_prefix = "rs_history"; compress = true;
/usr/local/ispconfig/server/conf-custom/nginx_vhost.conf.master
ssl_ciphers !aNULL:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-RSA-AES128-GCM-SHA256;
Enable swap
sudo /bin/dd if=/dev/zero of=/swap.1 bs=1M count=1024 sudo chmod 600 /swap.1 sudo /sbin/mkswap /swap.1 sudo /sbin/swapon /swap.1
/etc/fstab
/swap.1 swap swap defaults 0 0
su sudo echo "172.0.1.1 hostname.domainname hostname" >>/etc/hosts echo "hostname" >/etc/hostname sudo apt update && sudo apt upgrade sudo apt install linux-modules-extra-aws -y
and reboot!
#!/bin/bash # make sure locales are set sudo sed -i '/^#.* en_US.UTF-8* /s/^#//' /etc/locale.gen sudo locale-gen sudo apt update -y sudo apt install php-fpm ssl-cert curl gnupg software-properties-common rsync pigz php-net-idna2 php7.4-bcmath php8.1-bcmath php7.4-gmp php8.1-gmp -y mkdir /tmp/ispconfig cd /tmp/ispconfig sudo wget -O /tmp/ispconfig/ispconfig.tar.gz https://www.ispconfig.org/downloads/ispconfig-ai.tar.gz sudo tar xvfz /tmp/ispconfig/ispconfig.tar.gz -C /tmp/ispconfig sed -i.bak -e '24d' /tmp/ispconfig/lib/os/class.ISPConfigUbuntu2004OS.inc.php #no repositories sed -i.bak -e '141d' /tmp/ispconfig/lib/os/class.ISPConfigDebianOS.inc.php #no rar package on ARM php "ispconfig.ai.php" --use-nginx --use-php=7.4,8.1 --use-ftp-ports=40110-40210 --lang=en --no-ntp --no-mailman systemctl stop clamav-daemon systemctl disable clamav-daemon systemctl stop clamav-freshclam systemctl disable clamav-freshclam sudo rm /etc/rspamd/local.d/antivirus.conf sudo sed -i 's/^\(After\s*=\s*\).*$/\1network-online.target/' /usr/lib/systemd/system/nginx.service sudo chown root:ispapps /etc/roundcube/debian-db.php sudo chmod 640 /etc/roundcube/debian-db.php sudo chown root:ispapps /etc/roundcube/config.inc.php sudo chmod 640 /etc/roundcube/config.inc.php sudo chown -R ispapps:adm /var/log/roundcube sudo chmod -R 750 /var/log/roundcube sudo chown -R ispapps:ispapps /var/lib/roundcube/temp sudo chmod -R 750 /var/lib/roundcube/temp
Replace SH with BASH (select NO)
dpkg-reconfigure dash
ReadTimeout 10 MaxThreads 3 ConcurrentDatabaseReload no
php.ini
opcache.enable=1 opcache.enable_cli=1 opcache.memory_consumption=128 opcache.max_accelerated_files=10000 opcache.revalidate_freq=120 opcache.validate_timestamps = 0 opcache.save_comments=1 memory_limit = 512M post_max_size = 300M upload_max_filesize = 200M clear_env = no
in config.php
'htaccess.RewriteBase' => '/', 'htaccess.IgnoreFrontController' => true,
copy /usr/local/ispconfig/server/conf/nginx_vhost.conf.master to conf-custom and change
-location ~ /\. { deny all +location ~ /\.(?!file).* { deny all
add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload;"; add_header X-Content-Type-Options nosniff; add_header Referrer-Policy "no-referrer"; add_header X-Frame-Options "SAMEORIGIN"; add_header X-XSS-Protection "1; mode=block"; add_header X-Robots-Tag "noindex, nofollow"; add_header X-Download-Options noopen; add_header X-Permitted-Cross-Domain-Policies none; location = /robots.txt { allow all; log_not_found off; access_log off; } location ~ \.php$ { try_files /b615814d8f2c19dbcb25b1fbae07ce38.htm @php2; } location ^~ /.well-known { location = /.well-known/carddav { return 301 /remote.php/dav/; } location = /.well-known/caldav { return 301 /remote.php/dav/; } location /.well-known/acme-challenge { try_files $uri $uri/ =404; } location /.well-known/pki-validation { try_files $uri $uri/ =404; } return 301 /index.php$request_uri; } # set max upload size client_max_body_size 20G; fastcgi_buffers 64 4K; # Disable gzip to avoid the removal of the ETag header gzip off; # Uncomment if your server is build with the ngx_pagespeed module # This module is currently not supported. # pagespeed off; error_page 403 /core/templates/403.php; error_page 404 /core/templates/404.php; location / { rewrite ^ /index.php$uri; } location ~ ^/(?:build|tests|config|lib|3rdparty|templates|data)/ { return 404; } location ~ ^/(?:\.|autotest|occ|issue|indie|db_|console) { return 404; } location ~ ^(.+?\.php)(/.*)?$ { try_files $1 =404; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$1; fastcgi_param PATH_INFO $2; fastcgi_param HTTPS $https; {FASTCGIPASS} fastcgi_intercept_errors on; fastcgi_index index.php; fastcgi_buffers 64 64K; fastcgi_buffer_size 256k; fastcgi_param modHeadersAvailable true; fastcgi_read_timeout 7200; } location @php2 { fastcgi_split_path_info ^((?U).+\.php)(/?.+)$; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param HTTPS $https; {FASTCGIPASS} fastcgi_intercept_errors on; fastcgi_index index.php; fastcgi_buffers 64 64K; fastcgi_buffer_size 256k; fastcgi_param modHeadersAvailable true; fastcgi_read_timeout 7200; } location ~ ^/(?:index|remote|public|cron|core/ajax/update|status|ocs/v[12]|updater/.+|oc[ms]-provider/.+|core/templates/40[34])\.php(?:$|/) { fastcgi_split_path_info ^(.+\.php)(/.*)$; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param HTTPS on; fastcgi_param modHeadersAvailable true; #Avoid sending the security headers twice fastcgi_param front_controller_active true; #fastcgi_pass php-handler; {FASTCGIPASS} fastcgi_intercept_errors on; fastcgi_request_buffering off; } location ~ ^/(?:updater|oc[ms]-provider)(?:$|/) { try_files $uri/ =404; index index.php; } # Adding the cache control header for js and css files # Make sure it is BELOW the PHP block location ~* \.(?:css|js|mjs|map)$ { try_files $uri /index.php$uri$is_args$args; add_header Cache-Control "public, max-age=604800"; # Add headers to serve security related headers (It is intended to have those duplicated to the ones above) # Before enabling Strict-Transport-Security headers please read into this topic first. # add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload;"; add_header X-Content-Type-Options nosniff; add_header X-Frame-Options "SAMEORIGIN"; add_header X-XSS-Protection "1; mode=block"; add_header X-Robots-Tag none; add_header X-Download-Options noopen; add_header X-Permitted-Cross-Domain-Policies none; # Optional: Don't log access to assets access_log off; } location ~* \.(?:svg|gif|ico|jpg|png|webp|wasm|tflite|map|ogg|flac|woff2)$ { add_header Cache-Control "public, max-age=604800"; try_files $uri /index.php$uri$is_args$args; # Optional: Don't log access to other assets access_log off; } location = /data/htaccesstest.txt { allow all; log_not_found off; access_log off; }
location ~ /(conf/|bin/|inc/|vendor/|install.php) { deny all; } location ~ ^/data/ { internal ; } location ~ ^/lib.*\.(js|css|gif|png|ico|jpg|jpeg)$ { expires 365d; add_header Cache-Control "public"; } index doku.php; location / { try_files $uri $uri/ @dokuwiki; } location @dokuwiki { rewrite ^/_media/(.*) /lib/exe/fetch.php?media=$1 last; rewrite ^/_detail/(.*) /lib/exe/detail.php?media=$1 last; rewrite ^/_export/([^/]+)/(.*) /doku.php?do=export_$1&id=$2 last; rewrite ^/(.*) /doku.php?id=$1&$args last; } location ~ \.php$ { fastcgi_split_path_info ^(.+\.php)(/.*)$; fastcgi_param HTTPS on; include fastcgi_params; {FASTCGIPASS} fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param REDIRECT_STATUS 200; }
https://docs.aws.amazon.com/ses/latest/dg/postfix.html https://support.console.aws.amazon.com/support/contacts#/rdns-limits
sudo resize2fs /dev/nvme1n1
echo “YOUR_EXTERNAL_IP_ADDR” > /etc/pure-ftpd/conf/ForcePassiveIP
182 + 18.7×25 = ~650MB
key_buffer_size = 512K max_connections = 25 tmp_table_size = 10M max_heap_table_size = 10M table_definition_cache = 768 wait_timeout = 14400 interactive_timeout = 14400 innodb_log_file_size = 18M innodb_buffer_pool_size = 20M innodb_log_file_size = 5M query_cache_size = 8M query_cache_limit = 2M query_cache_type = 1 sort_buffer_size = 1M join_buffer_size = 1M
dbispconfig.sys_ini.custom_logo
echo "data:image/png;base64,`base64 < path/to/your/custom_logo.png | tr -d '\n'`"
sudo doveadm quota recalc -A