October 05, 2016

Linode Notes - Basic Setup

Buy a Linode plan

For location, Tokyo is not available now, and I choose Newark based on speed test (rather than Fremont).

Getting started

Ref: Getting Started with Linode

Deploy an image

  • At Linode manager, enter the dashboard of linode plan.
  • Select “Deploy an Image”. Choose Ubuntu Long Term Support (LTS) release, e.g. Ubuntu 16.04 LTS.
  • Set a password for root user (at least 6 characters long).
  • Click “Deploy” button.
  • When job finished, click “Boot” to power on.

Connect to the server

ssh root@[IP]

The IP address can be find in the “Remote Access” panel. Enter the password to log in.

Basic settings

Upgrade packages

sudo apt-get update && apt-get upgrade

Set hostname

echo "hostname" > /etc/hostname

# Set hostname from file
hostname -F /etc/hostname

# Verify hostname
hostname

Edit hosts file

nano /etc/hosts

and add a line:

[IP address] [Fully Qualified Domain Name (FQDN)] hostname

The value you assign as your system’s FQDN should have an “A” record in DNS pointing to your Linode’s IPv4 address.

(Save and close file after editing with nano: CTRL-X, then Y, then ENTER.)

Set timezone:

dpkg-reconfigure tzdata

# Check time
date

Securing Your Server

Ref: Securing Your Server

Add a Limited User Account

Create user:

adduser example_user

Add user to sudo group:

adduser example_user sudo

Switch to example_user:

exit
ssh example_user@[IP]

Authentication by SSH key pair

On local machine,

ssh-keygen -b 4096

Press Enter three times to use default filenames and empty passphrase.

Two files id_rsa and id_rsa.pub are generated in /home/your_username/.ssh.

On Linode,

mkdir -p ~/.ssh && sudo chmod -R 700 ~/.ssh/

Upload public key to server:

scp ~/.ssh/id_rsa.pub example_user@[IP]:~/.ssh/authorized_keys

Exit and log into Linode again. No password is needed now.

Adjust SSH settings

Edit /etc/ssh/sshd_config

# Disable SSH password authentication
PasswordAuthentication no

# Disable PAM authentication
UsePAM no

# Disallow root logins over SSH
PermitRootLogin no

Apply new ssh configurations:

sudo systemctl restart sshd

Use Fail2Ban for SSH Login Protection

sudo apt-get install fail2ban

Remove Unused Network-Facing Services

To see your Linode’s running network services:

sudo netstat -tulpn

And remove unused services accordingly.

Enable the Firewall

Refs:

Tools

zsh

Ref: Getting oh-my-zsh to work in Ubuntu

Prereq:

sudo apt-get install zsh
sudo apt-get install git-core

Getting zsh to work in ubuntu is weird, since sh does not understand the source command. So, you do this to install zsh

wget https://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh -O - | zsh

and then you change your shell to zsh

chsh -s `which zsh`

and then reboot

sudo shutdown -r 0

Because the default theme does not show hostname, we may want to change a theme (zsh themes).

Edit ~/.zshrc file

ZSH_THEME="alanpeabody"

Cyberduck for File transfer

Use Cyberduck: Transfer Files with Cyberduck on Mac OS X

Install desktop

Ref: Install VNC on Ubuntu 16.04

Install full desktop:

sudo apt-get install ubuntu-desktop gnome-panel gnome-settings-daemon metacity nautilus gnome-terminal

Or, install desktop environments without full packages (no tools like office and browser, small size, however there exists coding problem for Chinese font):

sudo apt-get install --no-install-recommends ubuntu-desktop gnome-panel gnome-settings-daemon metacity nautilus gnome-terminal

During the install process, you will be asked whether or not to change a system file to the new version. Type y then enter to use the updated version.

Install VNC server:

sudo apt-get install vnc4server

Exit and reconnect with command:

ssh -L 5901:127.0.0.1:5901 user@[IP]

start vnc server (for first time, set a password after prompt):

vncserver :1

Then connect with VNC viewer.

Ignore the “unencrypted connection” message. And a gray screen showed.

Close VNC server:

vncserver -kill :1

And edit ~/.vnc/xstartup file to add a few lines to the end:

gnome-panel &
gnome-settings-daemon &
metacity &
nautilus &

Start VNC server again and connect from client. Desktop should show.

In case that VNC viewer shows connection error: “Too many Security Failures”, restart the server:

vncserver -kill :1
vncserver :1

Install Chrome

How To Install Chrome Browser In Linux Or Ubuntu VPS

Troubleshooting

Perl locale warning

like this:

perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
    LANGUAGE = (unset),
    LC_ALL = (unset),
    LANG = "en_US.UTF-8"
are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").

Solution: comment out line from /etc/ssh/sshd_config:

AcceptEnv LANG LC_*

Ref: link

Last modified: 2016-12-12