|
| 1 | +#!/bin/bash |
| 2 | + |
| 3 | +# Run: curl -s https://raw.githubusercontent.com/Duckbuster/danbooru/master/INSTALL.arch > install.sh ; chmod +x install.sh ; ./install.sh |
| 4 | + |
| 5 | +if [[ "$(whoami)" != "root" ]] ; then |
| 6 | + echo "You must run this script as root" |
| 7 | + exit 1 |
| 8 | +fi |
| 9 | + |
| 10 | +echo "* DANBOORU INSTALLATION SCRIPT" |
| 11 | +echo "*" |
| 12 | +echo "* This script will install all the necessary packages to run Danbooru on a " |
| 13 | +echo "* Debian server." |
| 14 | +echo |
| 15 | +echo -n "* Enter the hostname for this server (ex: danbooru.donmai.us): " |
| 16 | +read HOSTNAME |
| 17 | + |
| 18 | +if [[ -z "$HOSTNAME" ]] ; then |
| 19 | + echo "* Must enter a hostname" |
| 20 | + exit 1 |
| 21 | +fi |
| 22 | + |
| 23 | +RUBY_VERSION=1.9.3-p327 |
| 24 | +GITHUB_INSTALL_SCRIPTS=https://raw.githubusercontent.com/Duckbuster/danbooru/master/script/install |
| 25 | + |
| 26 | +echo -n "* Enter a name for the site (default: Danbooru): " |
| 27 | +read SITENAME |
| 28 | + |
| 29 | +if [[ -z "$SITENAME" ]] ; then |
| 30 | + SITENAME=Danbooru |
| 31 | +fi |
| 32 | + |
| 33 | +# Install packages |
| 34 | +echo "* Installing packages..." |
| 35 | +pacman -Syu --noconfirm |
| 36 | +pacman -S --noconfirm build-essential automake libssl-dev libxml2-dev libxslt-dev ncurses-dev sudo libreadline-dev flex bison ragel memcached libmemcache-dev git curl libcurl4-openssl-dev imagemagick libmagickcore-dev libmagickwand-dev sendmail-bin sendmail postgresql postgresql-contrib libpq-dev nginx ssh |
| 37 | + |
| 38 | +if [ $? -ne 0 ]; then |
| 39 | + echo "* Error installing packages; aborting" |
| 40 | + exit 1 |
| 41 | +fi |
| 42 | + |
| 43 | +# Create user account |
| 44 | +useradd -m danbooru |
| 45 | +chsh -s /bin/bash danbooru |
| 46 | +usermod -G danbooru,sudo danbooru |
| 47 | + |
| 48 | +# Install rbenv |
| 49 | +echo "* Installing rbenv..." |
| 50 | +cd / |
| 51 | +sudo -u danbooru git clone git://github.com/sstephenson/rbenv.git ~danbooru/.rbenv |
| 52 | +sudo -u danbooru touch ~danbooru/.bash_profile |
| 53 | +echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~danbooru/.bash_profile |
| 54 | +echo 'eval "$(rbenv init -)"' >> ~danbooru/.bash_profile |
| 55 | +sudo -u danbooru mkdir -p ~danbooru/.rbenv/plugins |
| 56 | +sudo -u danbooru git clone git://github.com/sstephenson/ruby-build.git ~danbooru/.rbenv/plugins/ruby-build |
| 57 | +sudo -u danbooru bash -l -c "rbenv install $RUBY_VERSION" |
| 58 | +sudo -u danbooru bash -l -c "rbenv global $RUBY_VERSION" |
| 59 | + |
| 60 | +# Generate secret token and secret key |
| 61 | +echo "* Generating secret keys..." |
| 62 | +sudo -u danbooru mkdir ~danbooru/.danbooru/ |
| 63 | +sudo -u danbooru openssl rand -hex 32 > ~danbooru/.danbooru/secret_token |
| 64 | +sudo -u danbooru openssl rand -hex 32 > ~danbooru/.danbooru/session_secret_key |
| 65 | +chmod 600 ~danbooru/.danbooru/* |
| 66 | + |
| 67 | +# Install gems |
| 68 | +echo "* Installing gems..." |
| 69 | +sudo -u danbooru bash -l -c 'gem install --no-ri --no-rdoc bundler' |
| 70 | + |
| 71 | +echo "* Install configuration scripts..." |
| 72 | + |
| 73 | +# Update PostgreSQL |
| 74 | +curl -L -s $GITHUB_INSTALL_SCRIPTS/postgresql_hba_conf -o /etc/postgresql/9.1/main/pg_hba.conf |
| 75 | +/etc/init.d/postgresql restart |
| 76 | +sudo -u postgres createuser -s danbooru |
| 77 | +sudo -u danbooru createdb danbooru2 |
| 78 | + |
| 79 | +# Setup nginx |
| 80 | +curl -L -s $GITHUB_INSTALL_SCRIPTS/nginx.danbooru.conf -o /etc/nginx/conf.d/danbooru.conf |
| 81 | +sed -i -e "s/__hostname__/$HOSTNAME/g" /etc/nginx/conf.d/danbooru.conf |
| 82 | +systemctl restart nginx |
| 83 | + |
| 84 | +# Setup logrotate |
| 85 | +curl -L -s $GITHUB_INSTALL_SCRIPTS/danbooru_logrotate_conf -o /etc/logrotate.d/danbooru.conf |
| 86 | + |
| 87 | +# Setup danbooru account |
| 88 | +echo "* Enter a new password for the danbooru account" |
| 89 | +passwd danbooru |
| 90 | + |
| 91 | +echo "* Setting up SSH keys for the danbooru account" |
| 92 | +sudo -u danbooru ssh-keygen |
| 93 | + |
| 94 | +echo "* Setting up danbooru app..." |
| 95 | +sudo -u danbooru git clone https://github.com/Duckbuster/danbooru ~danbooru/danbooru |
| 96 | +sudo -u danbooru bash -l -c 'cd ~/danbooru ; bundle' |
| 97 | + |
| 98 | +echo "* Creating a new local git branch called develop" |
| 99 | +sudo -u danbooru bash -l -c 'cd ~danbooru ; git checkout -b develop' |
| 100 | + |
| 101 | +echo "* Setting up known_hosts for localhost" |
| 102 | +ssh-keyscan -t rsa,dsa localhost 2>&1 | sort -u - ~/.ssh/known_hosts > ~/.ssh/tmp_hosts |
| 103 | +cat ~/.ssh/tmp_hosts >> ~/.ssh/known_hosts |
| 104 | + |
| 105 | +echo "* Almost done! The code has been checked out at ~danbooru/danbooru. You can " |
| 106 | +echo "* now login as the danbooru user and run the following commands to deploy to " |
| 107 | +echo "* the server:" |
| 108 | +echo "*" |
| 109 | +echo "* cd ~/danbooru" |
| 110 | +echo "* bundle exec cap development deploy:setup" |
| 111 | +echo "* bundle exec cap development deploy:update" |
| 112 | + |
| 113 | + |
0 commit comments