From Got Opinion Wiki
Jump to navigation Jump to search

Shell commands

Enable root account (not recommended):

$sudo passwd root

Disable root account you lock root account:

$sudo passwd -l root

Want to use root @ console:

$sudo -i

Windows Dual Boot page

Recovering Ubuntu After Windows Install

Grub2 on Ubuntu wiki

Grub2 GUI Customizer

For support-related question you can use Launchpad. You can also search the complete history of questions and answers.

Ubuntu web forums

Grub 2 basics

Enable SSH server

apt-get install openssh-server

Secure SSH server using /etc/hosts.allow

Add a User

Example adding a user with username johndoe. Follow the instructions provided by the command.

sudo adduser johndoe

Networking utilities

See IP address information

ip a

Configure hostname

How to change hostname on Ubuntu 18 04


Verify which processes run on Ubuntu 18.04 start up use $ sudo systemctl list-unit-files.

CLI Software Management

Synchronize package index from Internet. Location of repositories /etc/apt/sources.list

sudo apt-get update

Install newest versions of all software packages

sudo apt-get upgrade

Update distribution

sudo apt-get dist-upgrade

Install package (if already installed, will attempt to update package)

apt-get install package-name

List installed packages

apt list --installed

List installed packages that start with 'python'

$ apt list -a --installed python*

Python on Ubuntu Notes

See My Python Notes for information not specific to Ubuntu and Python.

Verify Python 3 is installed

anon@hammerhead:~$ python --version

Command 'python' not found, but can be installed with:

sudo apt install python3       
sudo apt install python        
sudo apt install python-minimal

You also have python3 installed, you can run 'python3' instead.

anon@hammerhead:~$ python3 --version <----- Python 3 installed.
Python 3.6.7 <----- Version 3.6.7

Verify Python 3 PIP installed

$ pip3 --version
pip 9.0.1 from /usr/lib/python3/dist-packages (python 3.6)

To install Python 3 PIP

$ sudo apt-get install -y python3-pip

I use Python virtual environments. Verify Python venv module is installed

$ apt list -a --installed *venv* <----- If nothing with Python 3 venv comes back then you most install venv module

To install Python 3 venv module

$ sudo apt-get install -y python3-venv

Create virtual environment. I keep my Python virtual environments in a single directory. To create directory $ mkdir python-venv

Switch do directory $ cd python-venv/

Create virtual environment

$ python3 -m venv udmey-django

Activate virtual environment

$ source udmey-django/bin/activate

Prompt changes to reflect virtual environment

(udmey-django) anon@hammerhead:~/python-venv$

Note: Within virtual environment, you can use the command python instead of python3, and pip instead of pip3.

Deactivate virtual environment and prompt returns to normal

$ deactivate


My MongoDB notes


Install PostgreSQL

$ sudo apt install postgresql postgresql-contrib
Success. You can now start the database server using:

    /usr/lib/postgresql/10/bin/pg_ctl -D /var/lib/postgresql/10/main -l logfile start

Ver Cluster Port Status Owner    Data directory              Log file
10  main    5432 down   postgres /var/lib/postgresql/10/main /var/log/postgresql/postgresql-10-main.log
update-alternatives: using /usr/share/postgresql/10/man/man1/postmaster.1.gz to provide /usr/share/man/man1/postmaster.1.gz (postmaster.1.gz) in auto mode
Setting up postgresql (10+190) ...
Setting up postgresql-contrib (10+190) ...
Processing triggers for systemd (237-3ubuntu10.11) ...
Processing triggers for ureadahead (0.100.0-20) ...

Use PostgreSQL

Switch to postgres account

sudo -i postgres

Access PostgreSQL prompt


Exit PostgreSQL prompt


Log directly into PostgreSQL prompt with postgres user

sudo -u postgres psql

Add user (username must be same as PostgreSQL role and database)

sudo adduser user_name

Check current connection information


While logged in as postgres user...

Create a new role. Use man createuser for more information.

createuser --interactive

Create new database

createdb db_name

Same user connect to different database

psql -d postgres


My Nginx notes

Install Nginx with virtual hosts and SSL certificates

Apache 2


Ubuntu server guide to HTTPD

Ubuntu Open SSL guide

Ubuntu Certificates and Security

SSL Certificate HOWTO not Ubuntu specific

Configure Apache for SSL client certificate authentication


Update all your software and install Apache 2

# apt-get update
# apt-get upgrade
# apt install apache2

Verify Apache is running

# systemctl status apache2
● apache2.service - The Apache HTTP Server
   Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
  Drop-In: /lib/systemd/system/apache2.service.d
   Active: active (running) since Sun 2018-10-21 14:44:30 CDT; 11min ago
 Main PID: 17131 (apache2)
    Tasks: 55 (limit: 4181)
   CGroup: /system.slice/apache2.service
           ├─17131 /usr/sbin/apache2 -k start
           ├─17132 /usr/sbin/apache2 -k start
           └─17134 /usr/sbin/apache2 -k start

Oct 21 14:44:30 apu02 systemd[1]: Starting The Apache HTTP Server...
Oct 21 14:44:30 apu02 apachectl[17120]: AH00558: apache2: Could not reliably determine the server's
Oct 21 14:44:30 apu02 systemd[1]: Started The Apache HTTP Server.


Update firewall to allow only port 443 (default HTTPS TCP port)

# ufw app list
Available applications:
  Apache Full
  Apache Secure

# ufw allow 'Apache Secure'

# ufw status verbose | grep 443
443/tcp (Apache Secure)    ALLOW IN    Anywhere
443/tcp (Apache Secure (v6)) ALLOW IN    Anywhere (v6)

Teamspeak 3 setup on Ubuntu 16.04 and 18.x via command line

Followed steps at How to install Teamspeak 3 server on Ubuntu 16.04 64-bit to install Teamspeak 3 and get basic server running.

If you want to customize the server port follow next steps.

Install simple command-line program named sqlite3. How to use sqlite

robot00@apu00:~$ sudo apt install sqlite3

Launch sqlite3 using Teamspeak 3 sqlite database file:

robot00@apu00:~$ sudo sqlite3 /home/teamspeak/ts3server.sqlitedb
SQLite version 3.11.0 2016-02-15 17:29:24
Enter ".help" for usage hints.

Update port command:

sqlite> update servers set server_port=<CUSTOM UDP Port>;

Restart Teamspeak 3 server

robot00@apu00:~$ systemctl restart teamspeak.service

Test your connection using the <CUSTOM UDP Port>

Upgrade Teamspeak3 server

original steps

Login to SSH as root

Stop your current Teamspeak 3 Server systemctl stop teamspeak.service

Change to your teamspeak user cd /home/teamspeak/;su teamspeak

Download Teamspeak, extract it, update and tidy up.

wget https://files.teamspeak-services.com/releases/server/3.9.1/teamspeak3-server_linux_amd64-3.9.1.tar.bz2
tar xvfj teamspeak3-server_linux_amd64-3.9.1.tar.bz2
cd teamspeak3-server_linux_amd64
cp * -R /home/teamspeak
cd ..
rm -r teamspeak3-server_linux_amd64
rm teamspeak3-server_linux_amd64-3.9.1.tar.bz2

Return to root and start the Teamspeak server

systemctl start teamspeak.service

Check to make you can connect to Teamspeak 3 server

Factorio Headless Setup


Check that your version of glibc is >= 2.18.

robot01@apu01:~$ ldd --version
ldd (Ubuntu GLIBC 2.23-0ubuntu10) 2.23
Copyright (C) 2016 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
Written by Roland McGrath and Ulrich Drepper.

Output of ldd command confirms glibc version 2.23.

Switch to /opt directory and download latest Factorio stable headless version (0.16.36 as of this writing)

robot01@apu01:~$ cd /opt
robot01@apu01:/opt$ sudo wget https://www.factorio.com/get-download/0.16.36/headless/linux64
Saving to: ‘linux64’
linux64                  100%[==================================>]  23.04M   401KB/s    in 2m 48s

2018-05-01 20:38:47 (141 KB/s) - ‘linux64’ saved [24163736/24163736]

Rename file to match version (0.16.36 in this example)

robot01@apu01:/opt$ sudo mv linux64 factorio_headless_x64_0.16.36.tar.xz

Extract archived and zipped file

robot01@apu01:/opt$ sudo tar -xJf factorio_headless_x64_0.16.36.tar.xz
robot01@apu01:/opt$ ls -l
total 47204
drwxr-xr-x 4 root     root         4096 May  1 21:12 factorio
-rw-r--r-- 1 factorio factorio 24163736 May  1 20:56 factorio_headless_x64_0.16.36.tar.xz

Remove file (save space, you can always download again if needed)

robot01@apu01:/opt$ sudo rm factorio_headless_x64_0.16.36.tar.xz

Add a new user to run factorio and assign ownership of /opt/factorio directory to same user

robot01@apu01:/opt$ sudo useradd factorio
robot01@apu01:/opt$ sudo chown -R factorio:factorio /opt/factorio/

Verify permissions show factorio for both user and group

robot01@apu01:/opt$ ls -l
total 4
drwxr-xr-x 4 factorio factorio 4096 May  1 21:12 factorio

Test Factorio binary by switching to factorio user then start server

robot01@apu01:/opt$ sudo su - factorio
No directory, logging in with HOME=/

Start server and look for something like "File /savename does not exist."

$ /opt/factorio/bin/x64/factorio --start-server savename
   0.000 2018-05-01 21:20:47; Factorio 0.16.36 (build 36253, linux64, headless)
   0.260 Operating system: Linux (Ubuntu 16.04)
   0.260 Program arguments: "/opt/factorio/bin/x64/factorio" "--start-server" "savename"
   0.260 Read data path: /opt/factorio/data
   0.260 Write data path: /opt/factorio [103696/111098MB]
   0.260 Binaries path: /opt/factorio/bin
   0.304 System info: [CPU: AMD G-T40E Processor, 2 cores, RAM: 3550 MB]
   0.304 Environment: DISPLAY=<unset>, WAYLAND_DISPLAY=<unset>
   0.305 Running in headless mode
   0.316 Error GlobalModSettings.cpp:107: Failed to migrate mod settings file: Error when opening /opt/factorio/mods/mod-settings.json for reading: No such file or directory
   0.322 Loading mod core 0.0.0 (data.lua)
   0.388 Loading mod base 0.16.36 (data.lua)
   1.063 Loading mod base 0.16.36 (data-updates.lua)
   1.313 Checksum for core: 1316978547
   1.313 Checksum of base: 4140083139
   2.006 Info PlayerData.cpp:67: Local player-data.json unavailable
   2.006 Info PlayerData.cpp:72: Cloud player-data.json unavailable
   2.012 Custom inputs active: 0
   2.015 Factorio initialised
   2.016 Info ServerSynchronizer.cpp:29: nextHeartbeatSequenceNumber(0) initialized Synchronizer nextTickClosureTick(0).
   2.016 Info ServerMultiplayerManager.cpp:698: mapTick(4294967295) changing state from(Ready) to(PreparedToHostGame)
   2.016 Info ServerMultiplayerManager.cpp:698: mapTick(4294967295) changing state from(PreparedToHostGame) to(CreatingGame)
   2.017 Loading map /savename
   2.017 Error ServerMultiplayerManager.cpp:96: MultiplayerManager failed: "File /savename does not exist."
   2.017 Info ServerMultiplayerManager.cpp:698: mapTick(4294967295) changing state from(CreatingGame) to(InitializationFailed)
   2.017 Info GlobalContext.cpp:694: Waiting for child processes to exit:
   2.020 Info ServerMultiplayerManager.cpp:142: Quitting multiplayer connection.
   2.020 Info ServerMultiplayerManager.cpp:698: mapTick(4294967295) changing state from(InitializationFailed) to(Closed)
   2.062 Info UDPSocket.cpp:206: Closing socket
   2.065 Goodbye

As factorio user create /opt/factorio/ saves directory

$ mkdir /opt/factorio/saves

At this point you can load up saved games or create some games. Before that I want to install Factorio init script

Exit from factorio user back to sudo account

$ exit

Switch to /opt directory

robot01@apu01:/opt/factorio$ cd /opt

Clone Factorio init script from github

robot01@apu01:/opt$ sudo git clone https://github.com/Bisa/factorio-init.git
Cloning into 'factorio-init'...
remote: Counting objects: 484, done.
remote: Total 484 (delta 0), reused 0 (delta 0), pack-reused 484
Receiving objects: 100% (484/484), 109.47 KiB | 0 bytes/s, done.
Resolving deltas: 100% (276/276), done.
Checking connectivity... done.

Make Factorio start on operating system boot and restart if failure (configurable - I kept defaults for now)

robot01@apu01:/opt$ sudo cp /opt/factorio-init/factorio.service.example /etc/systemd/system/factorio.service
robot01@apu01:/opt$ sudo systemctl daemon-reload


robot01@apu01:/opt/factorio$ sudo ln -s /opt/factorio-init/factorio /etc/init.d/factorio
robot01@apu01:/opt/factorio$ sudo chmod +x /opt/factorio-init/factorio

Show help

robot01@apu01:/opt/factorio$ service factorio help
Usage: /etc/init.d/factorio COMMAND

Available commands:
   start                                 Starts the server
   stop                                  Stops the server
   restart                               Restarts the server
   status                                Displays server status
   players-online                        Shows online players
   players                               Shows all players
   cmd [command/message]                 Open interactive commandline or send a single command to the server
   chatlog [--tail|-t]                   Print the current chatlog, optionally tail the log to follow in real time
   new-game name [map-gen-settings] [map-settings]       Stops the server and creates a new game with the specified name using the specified map gen settings and map settings json files
   save-game name                        Stops the server and saves game to specified save
   load-save name                        Stops the server and loads the specified save
   install [tarball]                     Installs the server with optional specified tarball (omit to download and use the latest headless server from Wube)
   update [--dry-run]                    Updates the server
   invocation                            Outputs the invocation for debugging purpose
   listcommands                          List all init-commands
   listsaves                             List all saves
   version                               Prints the binary version
   help                                  Shows this help message

Setup Autocompletion

robot01@apu01:/opt/factorio$ sudo ln -s /opt/factorio-init/bash_autocomplete /etc/bash_completion.d/factorio
robot01@apu01:/opt/factorio$ sudo echo "source /opt/factorio-init/bash_autocomplete" >> ~/.bashrc

Copy example server settings (make any changes you want to copy)

robot01@apu01:/opt/factorio$ sudo cp /opt/factorio/data/server-settings.example.json /opt/factorio/data/server-settings.json

Copy example configuration (make any changes you want to copy)

robot01@apu01:/opt/factorio$ sudo cp /opt/factorio-init/config.example /opt/factorio-init/config

Make any changes to config ini

robot01@apu01:/opt/factorio$ sudo vi /opt/factorio/config/config.ini


Identify video card:

paul@congo:~$ lspci -nn | grep VGA
01:00.0 VGA compatible controller [0300]: nVidia Corporation G92 [GeForce 8800 GT] [10de:0611] (rev a2)

Verify interface speed

cat /sys/class/net/<interface>/speed

replace <interface> with name of your NIC (e.g. eth0)

Ubuntu video card

To Linux