Scripts to setup jumpserver in CentOS7.
After clone this repository, run the following command to deploy jumpserver:
bash setup.sh
Check log file if some errors happen when runing the command above:
less -R log
set -e | |
# Set firewall | |
firewall-cmd --zone=public --add-port=80/tcp --permanent | |
firewall-cmd --zone=public --add-port=2222/tcp --permanent | |
firewall-cmd --reload | |
# Set selinux | |
setenforce 0 | |
sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config | |
# Set charset | |
#localedef -c -f UTF-8 -i zh_CN zh_CN.UTF-8 | |
#export LC_ALL=zh_CN.UTF-8 | |
#echo 'LANG="zh_CN.UTF-8"' > /etc/locale.conf | |
# Set python | |
yum -y install wget gcc epel-release git | |
yum -y install python36 python36-devel | |
( cd /opt | |
python3.6 -m venv py3 | |
) | |
set -e | |
source /opt/py3/bin/activate | |
# Clone project | |
( cd /opt/ | |
wget --content-disposition https://github.com/jumpserver/jumpserver/archive/1.4.9.tar.gz -O jumpserver-1.4.9.tar.gz | |
mkdir /opt/jumpserver && tar xzf jumpserver-1.4.9.tar.gz -C /opt/jumpserver --strip-components 1 | |
) | |
# Install python requirements | |
( cd /opt/jumpserver/requirements | |
yum -y install $(cat rpm_requirements.txt) | |
pip install -r requirements.txt | |
) | |
# Install redis | |
yum -y install redis | |
systemctl enable redis | |
systemctl start redis | |
# Install mysql | |
yum -y install mariadb mariadb-devel mariadb-server | |
systemctl enable mariadb | |
systemctl start mariadb | |
# Set mysql | |
export DB_PASSWORD=`cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 24` | |
echo "export DB_PASSWORD=$DB_PASSWORD" >> ~/.bashrc | |
mysql -uroot -e "create database jumpserver default charset 'utf8'; grant all on jumpserver.* to 'jumpserver'@'127.0.0.1' identified by '$DB_PASSWORD'; flush privileges;" | |
# Config jumpserver | |
( cd /opt/jumpserver | |
cp config_example.yml config.yml | |
export SECRET_KEY=`cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 50` | |
export BOOTSTRAP_TOKEN=`cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 16` | |
echo "export SECRET_KEY=$SECRET_KEY" >> ~/.bashrc | |
echo "export BOOTSTRAP_TOKEN=$BOOTSTRAP_TOKEN" >> ~/.bashrc | |
sed -i "s/SECRET_KEY:/SECRET_KEY: $SECRET_KEY/g" /opt/jumpserver/config.yml | |
sed -i "s/BOOTSTRAP_TOKEN:/BOOTSTRAP_TOKEN: $BOOTSTRAP_TOKEN/g" /opt/jumpserver/config.yml | |
sed -i "s/# DEBUG: true/DEBUG: false/g" /opt/jumpserver/config.yml | |
sed -i "s/# LOG_LEVEL: DEBUG/LOG_LEVEL: ERROR/g" /opt/jumpserver/config.yml | |
sed -i "s/# SESSION_EXPIRE_AT_BROWSER_CLOSE: false/SESSION_EXPIRE_AT_BROWSER_CLOSE: true/g" /opt/jumpserver/config.yml | |
sed -i "s/DB_PASSWORD: /DB_PASSWORD: $DB_PASSWORD/g" /opt/jumpserver/config.yml | |
) | |
# Run jumpserver | |
( cd /opt/jumpserver | |
./jms start all -d | |
) |
set -e | |
source /opt/py3/bin/activate | |
# Clone project | |
( cd /opt | |
wget --content-disposition https://github.com/jumpserver/coco/archive/1.4.9.tar.gz -O coco-1.4.9.tar.gz | |
mkdir /opt/coco && tar zxf coco-1.4.9.tar.gz -C /opt/coco --strip-components 1 | |
) | |
# Install python requirements | |
( cd /opt/coco/requirements | |
yum -y install $(cat rpm_requirements.txt) | |
pip install -r requirements.txt | |
) | |
# Config coco | |
( cd /opt/coco | |
cp config_example.yml config.yml | |
sed -i "s/BOOTSTRAP_TOKEN: <PleasgeChangeSameWithJumpserver>/BOOTSTRAP_TOKEN: $BOOTSTRAP_TOKEN/g" /opt/coco/config.yml | |
sed -i "s/# LOG_LEVEL: INFO/LOG_LEVEL: ERROR/g" /opt/coco/config.yml | |
) | |
# Run | |
( cd /opt/coco | |
./cocod start -d | |
) |
set -e | |
( cd /opt | |
wget --content-disposition https://github.com/jumpserver/luna/releases/download/1.4.9/luna.tar.gz -O luna-1.4.9.tar.gz | |
mkdir /opt/luna && tar xzf luna-1.4.9.tar.gz -C /opt/luna --strip-components 1 | |
chown -R root:root luna | |
) |
set -e | |
# Install freerdp | |
mkdir /usr/local/lib/freerdp/ | |
ln -s /usr/local/lib/freerdp /usr/lib64/freerdp | |
rpm --import http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro | |
rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-5.el7.nux.noarch.rpm | |
yum -y localinstall --nogpgcheck https://download1.rpmfusion.org/free/el/rpmfusion-free-release-7.noarch.rpm https://download1.rpmfusion.org/nonfree/el/rpmfusion-nonfree-release-7.noarch.rpm | |
# Install other requirements | |
yum install -y java-1.8.0-openjdk libtool | |
yum install -y cairo-devel libjpeg-turbo-devel libpng-devel uuid-devel | |
yum install -y ffmpeg-devel freerdp-devel freerdp-plugins pango-devel \ | |
libssh2-devel libtelnet-devel libvncserver-devel pulseaudio-libs-devel \ | |
openssl-devel libvorbis-devel libwebp-devel ghostscript | |
# Install guacamole server | |
( cd /opt | |
wget --content-disposition https://github.com/jumpserver/docker-guacamole/archive/1.4.9.tar.gz -O docker-guacamole-1.4.9.tar.gz | |
mkdir /opt/docker-guacamole && tar xzf docker-guacamole-1.4.9.tar.gz -C /opt/docker-guacamole --strip-components 1 | |
) | |
( cd /opt/docker-guacamole/ | |
tar -xf guacamole-server-0.9.14.tar.gz | |
) | |
( cd /opt/docker-guacamole/guacamole-server-0.9.14 | |
autoreconf -fi | |
./configure --with-init-dir=/etc/init.d | |
make && make install | |
cd .. | |
rm -rf guacamole-server-0.9.14 | |
ldconfig | |
) | |
# Install tomcat | |
mkdir -p /config/guacamole /config/guacamole/lib /config/guacamole/extensions | |
ln -sf /opt/docker-guacamole/guacamole-auth-jumpserver-0.9.14.jar /config/guacamole/extensions/guacamole-auth-jumpserver-0.9.14.jar | |
ln -sf /opt/docker-guacamole/root/app/guacamole/guacamole.properties /config/guacamole/guacamole.properties | |
( cd /config | |
wget http://mirror.bit.edu.cn/apache/tomcat/tomcat-8/v8.5.39/bin/apache-tomcat-8.5.39.tar.gz | |
tar xf apache-tomcat-8.5.39.tar.gz | |
rm -rf apache-tomcat-8.5.39.tar.gz | |
mv apache-tomcat-8.5.39 tomcat8 | |
rm -rf /config/tomcat8/webapps/* | |
ln -sf /opt/docker-guacamole/guacamole-0.9.14.war /config/tomcat8/webapps/ROOT.war | |
sed -i 's/Connector port="8080"/Connector port="8081"/g' /config/tomcat8/conf/server.xml | |
sed -i 's/FINE/WARNING/g' /config/tomcat8/conf/logging.properties | |
) | |
( cd /config | |
wget https://github.com/ibuler/ssh-forward/releases/download/v0.0.5/linux-amd64.tar.gz | |
tar xf linux-amd64.tar.gz -C /bin/ | |
chmod +x /bin/ssh-forward | |
) | |
# Set Environment | |
export JUMPSERVER_SERVER=http://127.0.0.1:8080 | |
echo "export JUMPSERVER_SERVER=http://127.0.0.1:8080" >> ~/.bashrc | |
export BOOTSTRAP_TOKEN=$BOOTSTRAP_TOKEN | |
echo "export BOOTSTRAP_TOKEN=$BOOTSTRAP_TOKEN" >> ~/.bashrc | |
export JUMPSERVER_KEY_DIR=/config/guacamole/keys | |
echo "export JUMPSERVER_KEY_DIR=/config/guacamole/keys" >> ~/.bashrc | |
export GUACAMOLE_HOME=/config/guacamole | |
echo "export GUACAMOLE_HOME=/config/guacamole" >> ~/.bashrc | |
# Run | |
/etc/init.d/guacd start | |
sh /config/tomcat8/bin/startup.sh |
yum install -y yum-utils | |
cat > /etc/yum.repos.d/nginx.repo <<EOF | |
[nginx-stable] | |
name=nginx stable repo | |
baseurl=http://nginx.org/packages/centos/\$releasever/\$basearch/ | |
gpgcheck=1 | |
enabled=1 | |
gpgkey=https://nginx.org/keys/nginx_signing.key | |
EOF | |
yum install -y nginx | |
rm -rf /etc/nginx/conf.d/default.conf | |
cat > /etc/nginx/conf.d/jumpserver.conf <<EOF | |
server { | |
listen 80; # 代理端口, 以后将通过此端口进行访问, 不再通过8080端口 | |
# server_name demo.jumpserver.org; # 修改成你的域名或者注释掉 | |
client_max_body_size 100m; # 录像及文件上传大小限制 | |
location /luna/ { | |
try_files \$uri / /index.html; | |
alias /opt/luna/; # luna 路径, 如果修改安装目录, 此处需要修改 | |
} | |
location /media/ { | |
add_header Content-Encoding gzip; | |
root /opt/jumpserver/data/; # 录像位置, 如果修改安装目录, 此处需要修改 | |
} | |
location /static/ { | |
root /opt/jumpserver/data/; # 静态资源, 如果修改安装目录, 此处需要修改 | |
} | |
location /socket.io/ { | |
proxy_pass http://localhost:5000/socket.io/; # 如果coco安装在别的服务器, 请填写它的ip | |
proxy_buffering off; | |
proxy_http_version 1.1; | |
proxy_set_header Upgrade \$http_upgrade; | |
proxy_set_header Connection "upgrade"; | |
proxy_set_header X-Real-IP \$remote_addr; | |
proxy_set_header Host \$host; | |
proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for; | |
access_log off; | |
} | |
location /coco/ { | |
proxy_pass http://localhost:5000/coco/; # 如果coco安装在别的服务器, 请填写它的ip | |
proxy_set_header X-Real-IP \$remote_addr; | |
proxy_set_header Host \$host; | |
proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for; | |
access_log off; | |
} | |
location /guacamole/ { | |
proxy_pass http://localhost:8081/; # 如果guacamole安装在别的服务器, 请填写它的ip | |
proxy_buffering off; | |
proxy_http_version 1.1; | |
proxy_set_header Upgrade \$http_upgrade; | |
proxy_set_header Connection \$http_connection; | |
proxy_set_header X-Real-IP \$remote_addr; | |
proxy_set_header Host \$host; | |
proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for; | |
access_log off; | |
} | |
location / { | |
proxy_pass http://localhost:8080; # 如果jumpserver安装在别的服务器, 请填写它的ip | |
proxy_set_header X-Real-IP \$remote_addr; | |
proxy_set_header Host \$host; | |
proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for; | |
} | |
} | |
EOF | |
nginx -t | |
systemctl start nginx | |
systemctl enable nginx |
[Unit] | |
Description=Coco daemon | |
After=network.target | |
[Service] | |
Type=forking | |
Environment="PATH=/opt/py3/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" | |
ExecStart=/opt/coco/cocod start -d | |
ExecStop=/opt/coco/cocod stop -d | |
[Install] | |
WantedBy=multi-user.target | |
[Unit] | |
Description=guacamole daemon | |
After=network.target | |
[Service] | |
Type=forking | |
ExecStart=/etc/init.d/guacd start | |
ExecStop=/etc/init.d/guacd stop | |
[Install] | |
WantedBy=multi-user.target | |
[Unit] | |
Description=Jumpserver | |
After=network.target | |
[Service] | |
Type=forking | |
Environment="PATH=/opt/py3/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" | |
ExecStart=/opt/jumpserver/jms start all -d | |
ExecStop=/opt/jumpserver/jms stop all -d | |
[Install] | |
WantedBy=multi-user.target | |
#!/usr/bin/env bash | |
set -e | |
exec > >(tee -ai log) | |
exec 2>&1 | |
run() { | |
# :param $1: script to execute | |
echo -e "\033[31m $1 \033[0m" | |
bash -i "$1" | |
} | |
steps=( | |
0x01-prepare.sh | |
0x02-install-jumpserver.sh | |
0x03-install-coco.sh | |
0x04-install-luna.sh | |
0x05-install-guacamole.sh | |
0x06-install-nginx.sh | |
) | |
for step in "${steps[@]}"; do | |
run "$step" | |
done | |
[Unit] | |
Description=Tomcat | |
After=network.target | |
[Service] | |
Type=forking | |
ExecStart=/config/tomcat8/bin/startup.sh | |
ExecStop=/config/tomcat8/bin/shutdown.sh | |
[Install] | |
WantedBy=multi-user.target | |