I've been looking for a decent paste bin tool for a while now. I originally used the PasteBin source and then tried various other Ruby on Rails based alternatives. I did also use a bit of Gists which are offered by GitHub, but they seemed a bit much for a simple paste.
About 1 or 2 months ago, I caught wind of Ghostbin which I really liked. After some initial tinkering and prodding of the developer I finally got it working!
Of note, this guide is an update to this guide here!
Installing Ghostbin
First, as usual, let me plug my DigitalOcean link. It's easy and fast to get yourself up and running and perfect for using Ghostbin. I chose the basic $5/month system, and Ubuntu 14.04 x64.
Upon logging in to your new system, you'll want to add the following lines to your /etc/apt/sources.list
file:
deb http://ppa.launchpad.net/bzr/ppa/ubuntu trusty main
deb-src http://ppa.launchpad.net/bzr/ppa/ubuntu trusty main
Next run apt-get update
and then apt-get install bzr mercurial git python-pygments
. Next you'll want to install the Go language - apt-get install golang
.
For the next part, you're not really required to do this, but I like to be organized and I prefer not to run processes as root
if I can avoid it. Add a new user to your system to which you'll run Ghostbin under, adduser ghostbin
. You can set a password and other information for it if you'd like. Next I switch to that user, su - ghostbin
.
Next we'll update the ~/.bashrc
file for the new ghostbin user account.
nano .bashrc
Add the following to the bottom of the file:
export GOPATH=$HOME/go
Then run source ~/.bashrc
so that your current session is updated with the new information from the .bashrc
file. Now create a couple folders:
mkdir -p ~/go/src
Now change into that new directory - cd $HOME/go/src
. Create a folder called 'github.com', mkdir github.com
. Go into the github.com folder, cd github.com
and fetch the Ghostbin source code:
git clone https://github.com/DHowett/ghostbin.git
Go into the new folder created, cd ghostbin
. At this point your full path should be something like - /home/ghostbin/go/src/github.com/ghostbin
.
Now we're going to run the following commands to install the Go dependencies and such:
go get
go install
go build
Excellent, so now Ghostbin is install and ready to roll! This next bit is also optional but recommended. We'll install Nginx to proxy the requests. So as your root user run this command - apt-get install nginx
. Next go into the following directory - /etc/nginx/sites-available/
and create a file called, 'ghostbin'. Open the file in your favorite text editor and add the following to it:
# Upstream configuration
upstream ghostbin_upstream {
server ADDRESS:PORT;
keepalive 64;
}
# Public
server {
listen 80;
server_name ghostbin.YOURDOMAIN.com; # domain of my site
location / {
proxy_http_version 1.1;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-NginX-Proxy true;
proxy_set_header Host $http_host;
proxy_set_header Upgrade $http_upgrade;
proxy_redirect off;
proxy_pass http://ghostbin_upstream;
}
}
You'll want to set the ADDRESS:PORT
and the server_name ghostbin.YOURDOMAIN.com;
lines to match your setup. For the ADDRESS:PORT
, something like 127.0.0.1:8619
would work, or even 0.0.0.0:8619
. You change change the port or address to be anything which works for you. For the server_name
, you should set this to your domain. In my case, I set this to:
server_name paste.linuxbox.ninja; # domain of my site
Save the file and exit your editor when done making changes. You'll then want to create a symlink of your Nginx configuration and restart the Nginx service:
ln -s /etc/nginx/sites-available/ghostbin /etc/nginx/sites-enabled/ghostbin
service nginx restart
Now at this point you should be able to run Ghostbin and start using it. Change back into your 'ghostbin' user account (su - ghostbin
) and go to /home/ghostbin/go/src/github.com/ghostbin
. Then you can either run Ghostbin by using ./ghostbin -addr="ADDRESS:PORT"
or you do have some other options you can set:
ghostbin@paste:~/go/src/github.com/ghostbin$ ./ghostbin --help
Usage of ./ghostbin:
-addr="0.0.0.0:8080": bind address and port
-alsologtostderr=false: log to standard error as well as files
-log_backtrace_at=:0: when logging hits line file:N, emit a stack trace
-log_dir="": If non-empty, write log files in this directory
-logtostderr=false: log to standard error instead of files
-rebuild=false: rebuild all templates for each request
-root="./": path to generated file storage
-stderrthreshold=0: logs at or above this threshold go to stderr
-v=0: log level for V logs
-vmodule=: comma-separated list of pattern=N settings for file-filtered logging
I am currently running it as such:
ghostbin@paste:~/go/src/github.com/ghostbin$ ./ghostbin -addr="127.0.0.1:8619" -root="/home/ghostbin/storage" -log_dir="/home/ghostbin/logs"
You can see my Ghostbin up and running here as well as an example paste here.
Resources
This is a companion discussion topic for the original entry at https://jimmyb.ninja/post/1423696494