Ruby Rails CMS is a free to use, open source based ruby on rails framework. Ruby Rails CMS help quick make website with customization unlimited, Strong, Stable, Native web, Pure MVC, Clean structure + Easy setup server with rubyra script, multi-OS, maintain and extend easy.
Create server.
Need fresh VPS from exam ( Vultr ,Linenode, Digital Ocean , Virmach , Amazon EC2, azure ..)
Recommend way (Nginx + RVM) Rails & Ruby lastest version
Login VPS SSH with root to start setup Ruby On Rails
Check Current OS
cat /etc/*release
Wizard Auto Setup Ruby On Rails (CentOS & Ubuntu) (Video)
curl -O https://rubyra.com/scripts/install && bash install
Custom Install CentOS 7
yum update -y && yum -y install cronie unzip zip sudo which nano openssl ntpdate && yum install -y git-core zlib zlib-devel gcc-c++ patch readline readline-devel libyaml-devel libffi-devel openssl-devel make bzip2 autoconf automake libtool bison curl sqlite-devel -y && yum install -y ImageMagick ImageMagick-devel && yum install mysql-devel -y && yum install git -y && git config --global user.name "ruby rails git" && git config --global user.email "ruby@localhost" && git config --list && yum install epel-release -y && yum remove httpd -y && yum install nginx -y && systemctl start nginx.service && systemctl enable nginx.service && yum install nodejs -y && yum install nodejs -y && command curl -sSL https://rvm.io/mpapis.asc | gpg2 --import - && command curl -sSL https://rvm.io/pkuczynski.asc | gpg2 --import - && curl -L get.rvm.io | bash -s stable && source /etc/profile.d/rvm.sh && rvm reload && rvm requirements run && rvm install ruby --latest && rvm use ruby --latest --default && ruby -v && yum install iptables-services -y && gem install bundler && gem install rails --no-document && gem install rmagick && gem install mysql2 && yum update -y && ruby -v && rails -v
systemctl start iptables.service
iptables -I INPUT -p tcp -m multiport --dport 80,443,3306,25,465,587 -j ACCEPT
service iptables save
systemctl restart iptables.service
systemctl enable iptables
systemctl mask firewalld
useradd ruby
passwd ruby
Auto start when boot or reboot server
vi /etc/rc.d/rc.local (add value)
su - ruby && /home/ruby/.bash_profile
chmod +x /etc/rc.d/rc.local
Login with user edit file : .bash_profile
add value rails start server
Auto Renew SSL
Add cronjob: crontab -e
0 1 1 * * /opt/letsencrypt/certbot-auto renew --pre-hook "service nginx stop" --post-hook "service nginx start" >> /var/log/ssl-renew.log && /sbin/shutdown -r now
0 1 15 * * /opt/letsencrypt/certbot-auto renew --pre-hook "service nginx stop" --post-hook "service nginx start" >> /var/log/ssl-renew.log && /sbin/shutdown -r now
(Run 01:00 on the 1st & 15th of every month)
Save and recheck cronjob: crontab -l
Setup SSL free (point domain before setup)
yum update -y && yum -y install git && git clone https://github.com/letsencrypt/letsencrypt /opt/letsencrypt && cd /opt/letsencrypt && curl -O https://raw.githubusercontent.com/certbot/certbot/7f0fa18c570942238a7de73ed99945c3710408b4/letsencrypt-auto-source/letsencrypt-auto && yum install nginx -y && systemctl stop nginx.service && cd /opt/letsencrypt && ./letsencrypt-auto certonly --standalone && systemctl start nginx.service && systemctl enable nginx.service
Renew SSL
service nginx stop && /opt/letsencrypt/letsencrypt-auto renew && service nginx start
Add more website
service nginx stop && cd /opt/letsencrypt && ./letsencrypt-auto certonly --standalone && service nginx start
Setup SSL automated
https://certbot.eff.org/ (letsencrypt.org)
Setup MariaBD 10.x (Mysql)
echo "[mariadb]" >> /etc/yum.repos.d/MariaDB.repo && echo "name = MariaDB" >> /etc/yum.repos.d/MariaDB.repo && echo "baseurl = http://yum.mariadb.org/10.3/centos7-amd64" >> /etc/yum.repos.d/MariaDB.repo && echo "gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB" >> /etc/yum.repos.d/MariaDB.repo && echo "gpgcheck=1" >> /etc/yum.repos.d/MariaDB.repo && yum install -y mariadb mariadb-server MariaDB-client && yum install MariaDB-shared -y && service mysql start && chkconfig --levels 235 mariadb on && /usr/bin/mysql_secure_installation
Create database and remote connect
mysql -p
create database db_name COLLATE utf8_general_ci;
grant all privileges on db_name.* to 'db_user'@'%' identified by "db_password";
flush privileges;
exit;
Setup PostgreSQL 10.x
yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm && yum install postgresql10 -y && yum install postgresql10-server postgresql10-devel postgresql10-contrib -y && /usr/pgsql-10/bin/postgresql-10-setup initdb && yum install postgresql10-devel -y && systemctl enable postgresql-10 && mv /usr/bin/psql /usr/bin/psql-old && ln -s /usr/pgsql*/bin/psql /usr/bin/psql && export PATH="/usr/pgsql-*/bin:$PATH" && ln -s /usr/pgsql-*/bin/p* /usr/local/bin && systemctl enable postgresql-10.service && systemctl start postgresql-10 && systemctl status postgresql-10 && yum install iptables-services -y
systemctl start iptables.service
iptables -I INPUT -p tcp -m multiport --dport 5432 -j ACCEPT
service iptables save
systemctl restart iptables.service
sudo passwd postgres
Create PostgreSQL database
sudo -u postgres psql
if set pass psql ( type: \password postgres )
create database database_name;
create user username_db with encrypted password 'db_password';
grant all privileges on database database_name to username_db;
\q
sudo systemctl restart postgresql-10
Remote connect
vi /var/lib/pgsql/*/data/pg_hba.conf (add last file and change indent to md5)
host database_name username_db 0.0.0.0/0 md5 host database_name username_db ::/0 md5 host database_name username_db 127.0.0.1/32 md5 host database_name username_db ::1/128 md5
vi /var/lib/pgsql/*/data/postgresql.conf (add last file or change)
listen_addresses = '*'
Custom Install CentOS 6
yum update -y && yum -y install cronie unzip zip sudo which nano openssl ntpdate && yum install -y git-core zlib zlib-devel gcc-c++ patch readline readline-devel libyaml-devel libffi-devel openssl-devel make bzip2 autoconf automake libtool bison curl sqlite-devel -y && yum install -y ImageMagick ImageMagick-devel && yum install mysql-devel -y && yum install git -y && git config --global user.name "ruby rails git" && git config --global user.email "ruby@localhost" && git config --list && yum install epel-release -y && yum remove httpd -y && yum install nginx -y && chkconfig --add nginx && chkconfig --levels 235 nginx on && yum install nodejs -y && command curl -sSL https://rvm.io/mpapis.asc | gpg2 --import - && command curl -sSL https://rvm.io/pkuczynski.asc | gpg2 --import - && curl -L get.rvm.io | bash -s stable && source /etc/profile.d/rvm.sh && rvm reload && rvm requirements run && rvm install ruby --latest && rvm use ruby --latest --default && ruby -v && gem install bundler && gem install rails --no-document && gem install rmagick -v 2.16.0 && gem install mysql2 && yum update -y && ruby -v && rails -v
service iptables start
iptables -I INPUT -p tcp -m multiport --dport 80,443,3306,25,465,587 -j ACCEPT
service iptables save
service iptables restart
useradd ruby
passwd ruby
Auto start when boot or reboot server
vi /etc/rc.d/rc.local (add value)
su - ruby && /home/ruby/.bash_profile
chmod +x /etc/rc.d/rc.local
Login with user edit file : .bash_profile
add value rails start server
Auto Renew SSL
Add cronjob: crontab -e
0 1 1 * * /opt/letsencrypt/certbot-auto renew --pre-hook "service nginx stop" --post-hook "service nginx start" >> /var/log/ssl-renew.log && /sbin/shutdown -r now
0 1 15 * * /opt/letsencrypt/certbot-auto renew --pre-hook "service nginx stop" --post-hook "service nginx start" >> /var/log/ssl-renew.log && /sbin/shutdown -r now
(Run 01:00 on the 1st & 15th of every month)
Save and recheck cronjob: crontab -l
Setup SSL free (point domain before setup)
yum update -y && yum -y install git && git clone https://github.com/letsencrypt/letsencrypt /opt/letsencrypt && cd /opt/letsencrypt && curl -O https://raw.githubusercontent.com/certbot/certbot/7f0fa18c570942238a7de73ed99945c3710408b4/letsencrypt-auto-source/letsencrypt-auto && yum install nginx -y && service nginx stop && cd /opt/letsencrypt && ./letsencrypt-auto certonly --standalone && service nginx start
Renew SSL
service nginx stop && /opt/letsencrypt/letsencrypt-auto renew && service nginx start
Add more website
service nginx stop && cd /opt/letsencrypt && ./letsencrypt-auto certonly --standalone && service nginx start
Setup SSL automated
https://certbot.eff.org/ (letsencrypt.org)
Setup MariaBD 10.x (Mysql)
echo "[mariadb]" >> /etc/yum.repos.d/MariaDB.repo && echo "name = MariaDB" >> /etc/yum.repos.d/MariaDB.repo && echo "baseurl = http://yum.mariadb.org/10.3/centos6-amd64" >> /etc/yum.repos.d/MariaDB.repo && echo "gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB" >> /etc/yum.repos.d/MariaDB.repo && echo "gpgcheck=1" >> /etc/yum.repos.d/MariaDB.repo && yum install MariaDB-server MariaDB-client -y && yum install MariaDB-shared -y && service mysql start && chkconfig mysql on && /usr/bin/mysql_secure_installation
Create database and remote connect
mysql -p
create database db_name COLLATE utf8_general_ci;
grant all privileges on db_name.* to 'db_user'@'%' identified by "db_password";
flush privileges;
exit;
Setup PostgreSQL 10.x
yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-6-x86_64/pgdg-redhat-repo-latest.noarch.rpm && yum install postgresql10 -y && yum install postgresql10-server postgresql10-devel postgresql10-contrib -y && service postgresql-10 initdb && yum install postgresql10-devel -y && export PATH="/usr/pgsql-*/bin:$PATH" && ln -s /usr/pgsql-*/bin/p* /usr/local/bin && chkconfig postgresql-10 on && service postgresql-10 start && chkconfig postgresql-10 on
Create PostgreSQL database
sudo -u postgres psql
if set pass psql ( type: \password postgres )
create database database_name;
create user username_db with encrypted password 'db_password';
grant all privileges on database database_name to username_db;
\q
service postgresql-10 restart
Remote connect
vi /var/lib/pgsql/*/data/pg_hba.conf (add last file and change indent to md5)
host database_name username_db 0.0.0.0/0 md5 host database_name username_db ::/0 md5 host database_name username_db 127.0.0.1/32 md5 host database_name username_db ::1/128 md5
vi /var/lib/pgsql/*/data/postgresql.conf (add last file or change)
listen_addresses = '*'
Custom Install CentOS 8
dnf config-manager --set-enabled PowerTools && dnf update -y && dnf -y install cronie unzip zip sudo which nano openssl gcc && dnf install -y git-core zlib zlib-devel gcc-c++ patch readline readline-devel libffi-devel openssl-devel make bzip2 autoconf automake libtool bison curl sqlite-devel -y && dnf install mysql-devel -y && dnf install git -y && git config --global user.name "ruby rails git" && git config --global user.email "ruby@localhost" && git config --list && dnf install epel-release -y && dnf remove httpd -y && dnf install nginx -y && systemctl start nginx.service && systemctl enable nginx.service && dnf install nodejs -y && dnf install nodejs -y && command curl -sSL https://rvm.io/mpapis.asc | gpg2 --import - && command curl -sSL https://rvm.io/pkuczynski.asc | gpg2 --import - && curl -L get.rvm.io | bash -s stable && source /etc/profile.d/rvm.sh && rvm reload && rvm requirements run && rvm install ruby --latest && rvm use ruby --latest --default && ruby -v && dnf install iptables-services -y && gem install bundler && gem install rails --no-document && dnf install -y ImageMagick ImageMagick-devel && dnf install -y GraphicsMagick GraphicsMagick-devel GraphicsMagick-perl && gem install rmagick && gem install mysql2 && dnf update -y && ruby -v && rails -v
systemctl start iptables.service
iptables -I INPUT -p tcp -m multiport --dport 80,443,3306,25,465,587 -j ACCEPT
service iptables save
systemctl restart iptables.service
systemctl enable iptables
systemctl mask firewalld
useradd ruby
passwd ruby
Auto start when boot or reboot server
vi /etc/rc.d/rc.local (add value)
su - ruby && /home/ruby/.bash_profile
chmod +x /etc/rc.d/rc.local
Login with user edit file : .bash_profile
add value rails start server
Auto Renew SSL
Add cronjob: crontab -e
0 1 1 * * /opt/letsencrypt/certbot-auto renew --pre-hook "service nginx stop" --post-hook "service nginx start" >> /var/log/ssl-renew.log && /sbin/shutdown -r now
0 1 15 * * /opt/letsencrypt/certbot-auto renew --pre-hook "service nginx stop" --post-hook "service nginx start" >> /var/log/ssl-renew.log && /sbin/shutdown -r now
(Run 01:00 on the 1st & 15th of every month)
Save and recheck cronjob: crontab -l
Setup SSL free (point domain before setup)
yum update -y && yum -y install git && git clone https://github.com/letsencrypt/letsencrypt /opt/letsencrypt && cd /opt/letsencrypt && curl -O https://raw.githubusercontent.com/certbot/certbot/7f0fa18c570942238a7de73ed99945c3710408b4/letsencrypt-auto-source/letsencrypt-auto && yum install nginx -y && systemctl stop nginx.service && cd /opt/letsencrypt && ./letsencrypt-auto certonly --standalone && systemctl start nginx.service && systemctl enable nginx.service
Renew SSL
service nginx stop && /opt/letsencrypt/letsencrypt-auto renew && service nginx start
Add more website
service nginx stop && cd /opt/letsencrypt && ./letsencrypt-auto certonly --standalone && service nginx start
Setup SSL automated
https://certbot.eff.org/ (letsencrypt.org)
Setup MariaBD 10.x (Mysql)
dnf install -y mariadb mariadb-server && systemctl enable mariadb.service && systemctl start mariadb.service && chkconfig --levels 235 mariadb on && /usr/bin/mysql_secure_installation
Create database and remote connect
mysql -p
create database db_name COLLATE utf8_general_ci;
grant all privileges on db_name.* to 'db_user'@'%' identified by "db_password";
flush privileges;
exit;
Setup PostgreSQL 10.x/11.x
dnf install postgresql -y && dnf install postgresql-server postgresql-devel postgresql-contrib -y && postgresql-setup --initdb --unit postgresql && dnf install postgresql-devel -y && systemctl enable postgresql && systemctl enable postgresql.service && systemctl start postgresql && dnf install iptables-services -y
systemctl start iptables.service
iptables -I INPUT -p tcp -m multiport --dport 5432 -j ACCEPT
service iptables save
systemctl restart iptables.service
sudo passwd postgres
Create PostgreSQL database
sudo -u postgres psql
if set pass psql ( type: \password postgres )
create database database_name;
create user username_db with encrypted password 'db_password';
grant all privileges on database database_name to username_db;
\q
sudo systemctl restart postgresql
Remote connect
vi /var/lib/pgsql/data/pg_hba.conf (add last file and change indent to md5)
host database_name username_db 0.0.0.0/0 md5 host database_name username_db ::/0 md5 host database_name username_db 127.0.0.1/32 md5 host database_name username_db ::1/128 md5
vi /var/lib/pgsql/data/postgresql.conf (add last file or change)
listen_addresses = '*'
Custom Install Ubuntu >= 16
apt update -y && apt upgrade -y && sudo apt-get install curl -y && apt install ufw -y && apt install gnupg2 && apt install zip -y && sudo apt-get install git-core curl zlib1g-dev build-essential libssl-dev libreadline-dev libyaml-dev libsqlite3-dev sqlite3 libxml2-dev libxslt1-dev libcurl4-openssl-dev libffi-dev -y && apt install -y libmagickwand-dev && apt install libmysqlclient-dev -y && apt install unzip -y && apt install git -y && git config --global user.name "ruby rails git" && git config --global user.email "ruby@localhost" && git config --list && apt remove apache2 -y && apt install nginx -y && sudo ufw allow 'Nginx HTTP' && systemctl start nginx && systemctl enable nginx && apt install nodejs -y && command curl -sSL https://rvm.io/mpapis.asc | gpg2 --import - && command curl -sSL https://rvm.io/pkuczynski.asc | gpg2 --import - && curl -L get.rvm.io | bash -s stable && source /etc/profile.d/rvm.sh && rvm reload && rvm requirements run && rvm install ruby --latest && rvm use ruby --latest --default && ruby -v && gem install bundler && gem install rails --no-document && gem install rmagick && gem install mysql2 && ruby -v && rails -v
apt install ufw
sudo ufw allow ssh
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 3306/tcp
useradd ruby
passwd ruby
Auto start when boot or reboot server
Edit : /etc/rc.local and add value
su - ruby && /home/ruby/.profile
Login with user edit file : .profile
add value rails start server
Auto Renew SSL
Add cronjob: crontab -e
0 1 1 * * /opt/letsencrypt/certbot-auto renew --pre-hook "service nginx stop" --post-hook "service nginx start" && /sbin/shutdown -r now
0 1 15 * * /opt/letsencrypt/certbot-auto renew --pre-hook "service nginx stop" --post-hook "service nginx start" && /sbin/shutdown -r now
(Run 01:00 on the 1st & 15th of every month)
Save and recheck cronjob: crontab -l
Setup SSL free (point domain before setup)
apt update -y && apt -y install git && sudo apt-get install certbot python-certbot-nginx -y && git clone https://github.com/letsencrypt/letsencrypt /opt/letsencrypt && cd /opt/letsencrypt && curl -O https://raw.githubusercontent.com/certbot/certbot/7f0fa18c570942238a7de73ed99945c3710408b4/letsencrypt-auto-source/letsencrypt-auto && apt install nginx -y && service nginx stop && cd /opt/letsencrypt && ./letsencrypt-auto certonly --standalone && service nginx start
Renew SSL
service nginx stop && /opt/letsencrypt/letsencrypt-auto renew && service nginx start
Add more website
service nginx stop && cd /opt/letsencrypt && ./letsencrypt-auto certonly --standalone && service nginx start
Setup SSL automated
https://certbot.eff.org/ (letsencrypt.org)
Setup MariaBD (Mysql) (Ubuntu >= 16)
apt install mariadb-server mariadb-client -y && sudo apt-get install libnetcdf-dev libssl-dev libcrypto++-dev -y && mysql_secure_installation
Create database and remote connect
mysql -p
create database db_name COLLATE utf8_general_ci;
grant all privileges on db_name.* to 'db_user'@'%' identified by "db_password";
flush privileges;
exit;
Setup PostgreSQL
apt -y install postgresql postgresql-contrib && sudo apt-get install libpq-dev -y && sudo systemctl status postgresql && sudo systemctl enable postgresql
apt install ufw
sudo ufw allow 5432/tcp
sudo passwd postgres
Create PostgreSQL database
sudo -u postgres psql
if set pass psql ( type: \password postgres )
create database database_name;
create user username_db with encrypted password 'db_password';
grant all privileges on database database_name to username_db;
\q
sudo systemctl restart postgresql
Remote connect
vi /etc/postgresql/*/main/pg_hba.conf (add last file and change indent to md5)
host database_name username_db 0.0.0.0/0 md5 host database_name username_db ::/0 md5 host database_name username_db 127.0.0.1/32 md5 host database_name username_db ::1/128 md5
vi /etc/postgresql/*/main/postgresql.conf (add last file or change)
listen_addresses = '*'
Install Ubuntu in Win10
sudo apt update -y && sudo apt upgrade -y && sudo apt-get install curl -y && sudo apt install ufw -y && sudo apt install gnupg2 && sudo apt install zip -y && sudo apt-get install git-core curl zlib1g-dev build-essential libssl-dev libreadline-dev libyaml-dev libsqlite3-dev sqlite3 libxml2-dev libxslt1-dev libcurl4-openssl-dev libffi-dev -y && sudo apt install -y libmagickwand-dev && sudo apt install libmysqlclient-dev -y && sudo apt install unzip -y && sudo apt install git -y && git config --global user.name "ruby rails git" && git config --global user.email "ruby@local" && git config --list && sudo apt remove apache2 -y && sudo apt install nodejs -y && command curl -sSL https://rvm.io/mpapis.asc | gpg2 --import - && command curl -sSL https://rvm.io/pkuczynski.asc | gpg2 --import - && curl -L get.rvm.io | bash -s stable && source /home/$USER/.rvm/scripts/rvm && rvm reload && rvm requirements run && rvm install ruby --latest && rvm use ruby --latest --default && ruby -v && gem install bundler && gem install rails --no-document && gem install rmagick && gem install mysql2 && ruby -v && rails -v
Setup MariaBD (Mysql)
apt install mariadb-server mariadb-client -y && sudo apt-get install libnetcdf-dev libssl-dev libcrypto++-dev -y && mysql_secure_installation
Create database and remote connect
mysql -p
create database db_name COLLATE utf8_general_ci;
grant all privileges on db_name.* to 'db_user'@'%' identified by "db_password";
flush privileges;
exit;
Setup PostgreSQL
apt -y install postgresql postgresql-contrib && sudo apt-get install libpq-dev -y && sudo systemctl status postgresql && sudo systemctl enable postgresql
apt install ufw
sudo ufw allow 5432/tcp
sudo passwd postgres
Create PostgreSQL database
sudo -u postgres psql
if set pass psql ( type: \password postgres )
create database database_name;
create user username_db with encrypted password 'db_password';
grant all privileges on database database_name to username_db;
\q
sudo systemctl restart postgresql
After setup success, Login with user ruby
Create directory your_site_domain.com.
Go go current web file directory in command line.
Download and extract zip file remote or upload source code from local Download here
bundle install --path vendor/bundle
bundle update
rails s -p xxxx -b domain.com -d
Check database config, cache, secret_key_base, session_store... in web config.
rails s -p xxxx -b domain.com -d -e production
Check port , firewall , add script to .bash_profile , add host to nginx
Point domain or DNS to server.
Make nginx or vhost conf file domain (exam : rubyra.com.conf)
upstream xxxxxxx.com { server xxxxxxx.com:3000; } server { listen 80; #listen 443 ssl; server_name xxxxxxx.com www.xxxxxxx.com; #ssl_certificate /etc/letsencrypt/live/xxxxxxx.com/fullchain.pem; #ssl_certificate_key /etc/letsencrypt/live/xxxxxxx.com/privkey.pem; #ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; #ssl_prefer_server_ciphers on; #ssl_ciphers AES256+EECDH:AES256+EDH:!aNULL; root /home/ruby/domain.com; index index.html; client_max_body_size 12M; gzip on; gzip_static on; gzip_disable "msie6"; gzip_vary on; gzip_proxied any; gzip_comp_level 6; gzip_buffers 16 8k; gzip_http_version 1.1; gzip_types text/plain text/css application/json text/javascript application/javascript text/xml application/xml application/xml+rss; add_header Cache-Control "public, must-revalidate, proxy-revalidate"; keepalive_timeout 360; proxy_read_timeout 360s; location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_redirect off; proxy_read_timeout 360; try_files /system/maintenance.html $uri $uri/index.html $uri.html @ruby; } location @ruby { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_set_header X-Forwarded-Ssl on; proxy_redirect off; proxy_read_timeout 200; fastcgi_buffers 80 160k; fastcgi_buffer_size 320k; proxy_set_header X-Forwarded-Proto $scheme; proxy_pass http://xxxxxxx.com; } }
Add Host: /etc/host
127.0.0.1 yourdomain.com
::1 yourdomain.com
Another way:
Setup with : ( Passenger web app server )
Need support? Contact Here :)
CentOS 7 (Recommend) , memory is recommended >= 1GB
Config domain : create A / mail / IP address
Config domain : create MX / @ / mail.your_domain.com
hostname -f check : your_domain.com
Add or edit: /etc/hosts add : mail.your_domain.com
Add or edit: /etc/hostname add : mail.your_domain.com
hostnamectl set-hostname your_domain.com
SELINUX=disabled
(Add) /etc/hosts
127.0.0.1 mail.your_domain.com
127.0.0.1 your_domain.com
yum install postfix dovecot -y
mkdir /etc/postfix/ssl
cd /etc/postfix/ssl
openssl genrsa -des3 -out server.key 2048
openssl rsa -in server.key -out server.key.insecure
mv server.key server.key.secure
mv server.key.insecure server.key
openssl req -new -key server.key -out server.csr
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
(Add) /etc/postfix/main.cf
myhostname = mail.your_domain.com mydomain = your_domain.com myorigin = $mydomain home_mailbox = mail/ mynetworks = 127.0.0.0/8 inet_interfaces = all mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain smtpd_sasl_type = dovecot smtpd_sasl_path = private/auth smtpd_sasl_local_domain = smtpd_sasl_security_options = noanonymous broken_sasl_auth_clients = yes smtpd_sasl_auth_enable = yes smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination smtp_tls_security_level = may smtpd_tls_security_level = may smtp_tls_note_starttls_offer = yes smtpd_tls_loglevel = 1 smtpd_tls_key_file = /etc/postfix/ssl/server.key smtpd_tls_cert_file = /etc/postfix/ssl/server.crt smtpd_tls_received_header = yes smtpd_tls_session_cache_timeout = 3600s tls_random_source = dev:/dev/urandom
(Add) /etc/postfix/master.cf
submission inet n - n - - smtpd -o syslog_name=postfix/submission -o smtpd_sasl_auth_enable=yes -o smtpd_recipient_restrictions=permit_sasl_authenticated,reject -o milter_macro_daemon_name=ORIGINATING smtps inet n - n - - smtpd -o syslog_name=postfix/smtps -o smtpd_sasl_auth_enable=yes -o smtpd_recipient_restrictions=permit_sasl_authenticated,reject -o milter_macro_daemon_name=ORIGINATING
(Add) /etc/dovecot/conf.d/10-master.conf
service auth { unix_listener /var/spool/postfix/private/auth { mode = 0660 user = postfix group = postfix } }
(Add) /etc/dovecot/conf.d/10-auth.conf
auth_mechanisms = plain login
(Add) /etc/dovecot/conf.d/10-mail.conf
mail_location = maildir:~/mail
(Add) /etc/dovecot/conf.d/20-pop3.conf
pop3_uidl_format = %08Xu%08Xv
systemctl restart postfix
systemctl enable postfix
systemctl restart dovecot
systemctl enable dovecot
yum install iptables-services -y
systemctl start iptables.service
iptables -I INPUT -p tcp -m multiport --dport 80,443,3306,25,465,587,110,143,993,995 -j ACCEPT
service iptables save
systemctl restart iptables.service
systemctl enable iptables
systemctl mask firewalld
telnet mail.your_domain.com 465
quit
postfix check
Create email account user
useradd -m email_account_name -s /sbin/nologin && passwd email_account_name
Another way:
Using software mail: https://www.iredmail.org/index.html
Using service : ( https://www.zoho.com/mail/ )
Need support? Contact Here :)
Advisory, Support, Error, Setup, Move Server, Maintain website..
Packet : Support
Price : 15$/hour (Not pay when not happy support)
Fullstack freelance application,website with ruby on rails language.
Packet : Full
Price : Contact here
Advisory : Free