Do meetup
Upcoming SlideShare
Loading in...5

Do meetup






Total Views
Views on SlideShare
Embed Views



0 Embeds 0

No embeds



Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
Post Comment
Edit your comment
  • So I noticed most people start their talk with an introduction. I’m going to do likewise.I’m not really sure if there’s much to intro about me, but I’m PohChiat.
  • I realised that my title was really cryptic. I was kind of chatting with bryan about what I wanted to talk about. A couple of ideas, but I found out what I have really been doing was simply fooling around with what $5 could give me.So today, I’m going to share with you the kind of stuff I got running on my droplet at this moment. I certainly didn’t invent any of this stuff,

Do meetup Do meetup Presentation Transcript

  • Digital Ocean Meetup What I do with my $5 (per month actually)
  • Introduction About me? Or about Digital Ocean?
  • What I’m going to talk about
  • So why DO?
  • The Adverts
  • Price?
  • Easy?
  • Performance? • Sorry no picture. • Benchmarks gives some indication, but hard to make it really objective and useful. • Location. DO has no Asia servers.. yet.
  • It depends. Cliché I know.
  • Experience with DO • I have a website: • Some parts of Shoppink use Digital Ocean • Plus my random stuff I’m going to share with you
  • Alternatives? Many.
  • Setting up DO
  • One
  • Two
  • That’s it!
  • A website
  • Recipe • A personal website. • Simply get a web server running (apache or nginx) • My website uses Sinatra. • We then need to get nginx talking to Sinatra.
  • Sinatra • Sinatra is a Ruby micro-framework • require 'sinatra' get '/hi' do "Hello World!" end
  • Unicorn # set path to app that will be used to configure unicorn, # note the trailing slash in this example @dir = "/home/sockmister/personal-website/" worker_processes 1 working_directory @dir timeout 30 # Specify path to socket unicorn listens to, # we will use this in our nginx.conf later listen "#{@dir}tmp/sockets/unicorn.sock", :backlog => 64 # Set process id path pid "#{@dir}tmp/pids/" # Set log file paths stderr_path "#{@dir}log/unicorn.stderr.log" stdout_path "#{@dir}log/unicorn.stdout.log"
  • Nginx • sudo apt-get install nginx • We can start, stop, restart by o sudo service nginx restart|start|stop|status • We then write the config files.
  • The Idea • The apps we are running today run behind nginx. Nginx App1 App2 App3 Incoming Requests Outgoing Replies
  • Config File upstream pohchiat{ server unix:/home/sockmister/personal-website/tmp/sockets/unicorn.sock; } server { listen 80; server_name; root /home/sockmister/personal-website/public; location / { proxy_pass http://pohchiat; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }
  • Done!
  • Free GitHub repos Using GitLab
  • Recipe • Setup GitLab o Install dependencies o Setup new user o Clone and install GitLab shell o Setup database (postgresql or mysql) o Setup GitLab itself • Hook up with Nginx
  • Dependencies • Python 2 o Sudo apt-get install python • Ruby o Ubuntu repositories are outdated o I use rvm to handle ruby versions. • Gem o gem install bundler
  • Adduser • We need to create a new user called ‘git’. o sudo adduser --disabled-login --gecos 'GitLab' git
  • GitLab Shell • Clone o sudo -u git -H git clone • Git checkout the right version o sudo -u git -H git checkout v1.7.1 • Edit config file o sudo -u git -H editor config.yml • Run a script o sudo -u git -H ./bin/install
  • Database • Install postgresql o sudo apt-get install -y postgresql-9.1 libpq-dev • Login o sudo -u postgres psql -d template1 • Create user and database o CREATE USER git WITH PASSWORD '$password'; o CREATE DATABASE gitlabhq_production OWNER git;
  • GitLab • Clone o sudo -u git -H git clone gitlab • Git checkout o sudo -u git -H git checkout 6-1-stable • Configure o Copy and change GitLab config file o Mkdir for logs, tmp, public o Copy and change unicorn config file • Install required Gems o gem install charlock_holmes --version '' o bundle install --deployment --without development test mysql aws • Initialize DB o sudo -u git -H chmod o-rwx config/database.yml o bundle exec rake gitlab:setup RAILS_ENV=production • Run as service
  • Nginx • This time GitLab has supplied the Nginx config file. • The idea though, is really the same.
  • Done!
  • E-Book manager Calibre Library
  • Calibre Library This needs a bit of intro.
  • Calibre Library
  • Recipe • Setup calibre app (this time it’s actually really simple) • Setup dropbox daemon • Hook up to Nginx (same!)
  • Setup Calibre • sudo python -c "import sys; py3 = sys.version_info[0] > 2; u = __import__('urllib.request' if py3 else 'urllib', fromlist=1); exec(u.urlopen('').read()); main() • To start calibre server, • Sudo /opt/calibre/calibre-server • Options: • --with-library • --username • --password • --daemonize
  • Dropbox • I run calibre on my laptop as well. • Need a simple way to sync the books both ways. • Trivia: NUS won Dropbox space race a while ago and all NUS students have 25 GB extra space.
  • Dropbox • Download & install o wget -O dropbox.tar.gz o tar –xzvf dropbox.tar.gz • Run o ~/.dropbox-dist/dropboxd • Link to your Dropbox account o This client is not linked to any account… • Control Dropbox o wget -O ~/.dropbox/ ""
  • Done!
  • Caveats • It’s experimental. • Just because you can, doesn’t mean you should. • 512MB RAM • Erm. I cheated. I paid for domain too.
  • Takeaway • Tons of open source projects to try out. • It’s not a must to run this on DO.
  • Resources • Digital Ocean has a lot of guides. A lot a lot.
  • Otherwise… • Setup nginx o o • GitLab o stable/doc/install/ • Calibre server o • Dropbox daemon o server
  • Thank you!