Merge branch 'master' into dev

This commit is contained in:
Malin Freeborn 2022-04-07 21:29:52 +02:00
commit 9c81d240f2
114 changed files with 485 additions and 12485 deletions

View File

@ -44,4 +44,6 @@ How to see which websites you're actively accessing:
This started as a few personal notes, and will probably continue to look like that for some time.
It's a bit of a mess.
Systemd is taken as a default. Non-systemd commands we relegate to their respective distros, e.g. runit for Void Linux.
Systemd is taken as a default.
Non-systemd commands we relegate to their respective distros, e.g. runit for Void Linux.

View File

@ -1,6 +1,6 @@
---
title: "at"
tags: [ "Documentation", "basics" ]
tags: [ "Documentation", "Basics" ]
---
Install with:

View File

@ -1,6 +1,6 @@
---
title: "basics"
tags: [ "Documentation", "basics" ]
title: "Basics"
tags: [ "Documentation", "Basics" ]
---
You need about a dozen commands to move around Linux.

View File

@ -1,6 +1,6 @@
---
title: "clock"
tags: [ "Documentation", "basics" ]
tags: [ "Documentation", "Basics" ]
---
Show system time:

View File

@ -1,6 +1,6 @@
---
title: "conditionals"
tags: [ "Documentation", "basics" ]
tags: [ "Documentation", "Basics" ]
---
# If statements

View File

@ -1,6 +1,6 @@
---
title: "cron"
tags: [ "Documentation", "basics" ]
tags: [ "Documentation", "Basics" ]
---
# Cron

View File

@ -1,11 +1,13 @@
---
title: "kernel"
tags: [ "Documentation", "basics" ]
tags: [ "Documentation", "Basics" ]
---
# Living Space
## Living Space
Kernel modules live in lib/modules/$(uname -r)
## Change
Load them with
> sudo modprobe ath9k
@ -16,5 +18,9 @@ Or remove one with
The PC's irritating speaker beep can be really annoying. Disable it with:
> sudo rmmod pcspeaker
> sudo modprobe -r pcspeaker
Permanently disable a module by blacklisting it in `/etc/modprobe.d`:
> echo 'blacklist pcspkr' > /etc/modprobe.d/*nobeep*.conf

View File

@ -1,16 +1,17 @@
---
title: "kill"
tags: [ "Documentation", "basics" ]
tags: [ "Documentation", "Basics" ]
---
If you want to kill a program in a graphical environment, open a terminal and typeL
## Graphical Programs
If you want to kill a program in a graphical environment, open a terminal and type:
# Graphical Programs
> xkill
Then click on the application which you want to kill.
## All Programs
# All Programs
To kill a program, find it with:
@ -22,7 +23,7 @@ Kill the program with:
> kill 19643
## Types of Kill
# Types of Kill
To see an ordered list of termination signals:

View File

@ -1,12 +1,15 @@
---
title: "links"
tags: [ "Documentation", "basics" ]
tags: [ "Documentation", "Basics" ]
---
Link from X to Y.
> ln -s X ../otherdir/Y
Links cause ownership headaches. Solve this with -h:
If you want a hard link, this will make a single file exist in two locations.
If it is deleted in one location, it continues to exist in the other.
> chown -h user1 mysymlink
> ln *X* *Y*
Both files must be on the same hard drive, as they have the same inode (check this with `ls -i file`).

View File

@ -1,6 +1,6 @@
---
title: "locale"
tags: [ "Documentation", "basics" ]
tags: [ "Documentation", "Basics" ]
---
A list of supported locales is available at /usr/share/i18n/SUPPORTED

View File

@ -1,7 +1,13 @@
---
title: "locating"
tags: [ "Documentation", "basics" ]
tags: [ "Documentation", "Basics" ]
---
# Type
`type` shows what kind of thing you're running, be it an alias, function, or binary program.
> type cmus
# Whereis the Program
Ask where the `angband` program is, along with all its configuration files:
@ -12,13 +18,10 @@ Also `which` shows where a binary file (the program) is,
> which cmus
`type` shows what kind of thing you're running, be it an alias, or binary program.
> type cmus
# Quick Search for Files
You'll need to set up `locate` for this by installing `mlocate`. `mlocate` needs a list of all files on the machine, so run:
You'll need to set up `locate` for this by installing `mlocate`.
`mlocate` needs a list of all files on the machine, so run:
> sudo updatedb
@ -26,3 +29,5 @@ Then to find a file called 'my-cats.jpg', run:
> locate cats
For best results, run `updatedb` regularly, perhaps in crontab.

View File

@ -1,52 +0,0 @@
---
title: "packages"
tags: [ "Documentation", "basics" ]
---
# Looking
Your package has something to do with unzipping. Find out more:
> apropos unzip
# Maintenance
> dpkg -l
List what's installed.
# Libraries
Libraries under /lib/ typically contain an .so suffix when they're dynamic. It means 'shared object' as a number of programs will refer to it.
Others will have an /a/ suffix, meaning that they're static, and will be loaded at runtime.
We can check the dependencies of a program using the ldd command upon anything in a library. For example:
> ldd/usr/bin/md5sum
... shows us that md5sum depends upon:
- linux-vdso.so.1
- libc.so.6
- lib64/ld-linux-x86-64.so.2
To list all libraries, run:
> ldconfig -p
For example, if looking at /usr/lib/x86_64-linux-gnu/libXcomposite.so.1, we might wonder what it's for. We can then run:
> ldconfig -p | grep libXcomposite
... and find out nothing except that it redirects /usr/lib/x86...
So at least we know where it is.
> ldconfig -p | grep usb
... this will show where things which nominally relate to usbs live.
You can add to the libarary path by putting just any text file in /etc/ld.so.cache, e.g. in Arch where the path to the fakeroot environment is placed there.

View File

@ -1,19 +1,7 @@
---
title: "processes"
tags: [ "Documentation", "basics" ]
tags: [ "Documentation", "Basics" ]
---
# Free
See free space with:
> free
and make it human readable with:
> free -h
Or `-m` for megabytes.
# Proccesses
See running items in current terminal with

View File

@ -1,39 +0,0 @@
---
title: "shell"
tags: [ "Documentation", "basics" ]
---
Dash - fast but limited funcionality, great for scripts
sh - a simple link to whatever your default shell is
bash - the standard
elvish - user-friendly, but new, with a full file-browser embedded into the system.
# Login
All shells launch either as login or non-login. All remote sessions without a GUI withl require authentication, and therefore will be login.
## Login
These shells start by reading /etc/profile then the first of ~/.bash_profile, ~/.bash_login or ~/.profile, and load all given values.
## Non-Login
Non-login shells will read /etc/bash.bashrc and then the ~/.bashrc file. You can summon the different shell perameters with the command `.`.
For example, so summon the file ~/.bashrc, you can perform:
`. ~/.bashrc`
How the logout is handled depends upon ~/.bash_logout
# Defaults
The default shell config files to create for a new user are under /etc/skel.
# Shellcheck
Run `shellcheck script.sh` on your scripts to check them for mistakes.

View File

@ -1,6 +1,6 @@
---
title: "time"
tags: [ "Documentation", "basics" ]
tags: [ "Documentation", "Basics" ]
---
# systemd
@ -8,7 +8,7 @@ Set time to synchronize with an ntp server:
> timedatectl set-ntp true
This info stays in /usr/share/zoneinfo
This info stays in `/usr/share/zoneinfo`.
# Local Time
@ -46,21 +46,9 @@ Then set that language, with:
# Network Time Protocol
Enter the shell with:
Glimpse an overview with:
> ntpq
> ntpq -p
Or just glimpse and overview with:
> ntpq -q
This clock can drift, which is then listed under /var/log/ntp.drift
The config is under /etc/ntp.conf. If a line for the stats directory is listed, it'll log stats, e.g.:
`statsdir /var/log/ntpstats/`
This can show if clock drift occurs.
The config file also lets you specify servers to obtain time from.
Usually this is run as a service, so just start that service.

View File

@ -1,6 +1,6 @@
---
title: "users"
tags: [ "Documentation", "basics" ]
tags: [ "Documentation", "Basics" ]
---
# Basic Information
@ -14,8 +14,6 @@ Obviously:
> getent shadow
will require sudo.
## Examples
> sudo adduser maestro

View File

@ -1,23 +0,0 @@
---
title: "email"
tags: [ "Documentation", "chat" ]
---
# Sendmail
Compose a message like this:
```
To: alice@domain.com
Subject: my new mail server
From: literally@anything.com
This is the message
```
... and put it in ~/mail.txt.
Then send with sendmail using:
> sendmail ~/mail.txt

View File

@ -1,15 +0,0 @@
---
title: "irssi"
tags: [ "Documentation", "chat" ]
---
In program:
> /NETWORK LIST
> /CHANNEL LIST
> /connect chat.freenode.net
> /set nick ghast
> /join #hklbgd
> /leave #lkj

View File

@ -1,6 +1,6 @@
---
title: "profanity"
tags: [ "Documentation", "chat" ]
tags: [ "Documentation", "Chat" ]
---
# Pre Setup

View File

@ -1,6 +1,6 @@
---
title: "signal"
tags: [ "Documentation", "distros" ]
tags: [ "Documentation", "Chat" ]
---
> yay -S signal-cli

View File

@ -1,6 +1,6 @@
---
title: "wgetpaste"
tags: [ "Documentation", "chat" ]
tags: [ "Documentation", "Chat" ]
---
See available pastebins:
@ -19,4 +19,3 @@ Paste in the file then load the result to the right-hand clipboard:
> wgetpaste -s dpaste -X

View File

@ -1,6 +1,6 @@
---
title: "archives"
tags: [ "Documentation", "data" ]
tags: [ "Documentation", "backups" ]
---
# GPG Archives

52
data/backups/unison.md Normal file
View File

@ -0,0 +1,52 @@
---
title: "unison"
tags: [ "documentation", "backups", "sync" ]
---
Install unison on both machines, and on both make the `~/.unison` directory.
Make a job called `backup`:
> vim ~/.unison/backup.prf
All jobs must end in `.prf`.
Here is an example job, which synchronizes the `~/music` directory with a remote machine.
```
auto = true
root=/home/ghost
root=ssh://ghost@192.168.0.10//home/ghost/
path=music
ignore=Name *.flac
```
The last command means it will ignore any file with a name ending in `.flac`.
Add a port with this line:
```
sshargs=-p 4444
```
## Automatic Runs
The first command means this will run but also confirm which files will be deleted, and which will be transferred, us `batch = true` instead.
Set unison to run with crontab or a systemd unit file to have directories synchronize automatically.
## Problem Solving
Unison is extremely sensitive to version changes.
Both machines must have exactly the same version of unison installed, as well as the same version of `ocaml`.
Check with:
> unison -version
You will see data files summarizing what has happened in the `~/.unison` directory.
If something goes wrong, you may be prompted to delete these to start again.

View File

@ -6,21 +6,25 @@ tags: [ "Documentation", "data" ]
## New Machines
> git config --global user.email "malinfreeborn@tutamail.com"
> git config --global user.email *"malinfreeborn@tutamail.com"*
> git config --global user.name "Malin Freeborn"
> git config --global user.name *"Malin Freeborn"*
## New Git
# New Git
Start a git:
Start a git in a folder:
> mkdir *project* && cd *project*
> git init
Add whatever's in the folder.
Make a file explaining what the project does:
> git add .
> vim README.md
Then make the initial commit:
> git add README.md
Then make the initial commit, explaining the change you just made:
> git commit
@ -38,9 +42,10 @@ Check your history:
# Remotes
Get the url of your git remote and add it, with the name "origin":
If you want to keep a copy on a public site such as Gitlab, so others can see it, then go there and create a blank project (no readme, nothing).
Find the address you want and add it as a remote:
> git remote add origin git@gitlab.com:bindrpg/core
> git remote add *gitlab* *https://gitlab.com/username/projectx*
Tell git you're pushing the branch "master" to the remote repo "origin":
@ -55,7 +60,7 @@ If someone makes a change on the remote, pull it down with:
A branch is a full copy of the project to test additional ideas.
You can make a new branch called 'featurez' like this:
> git branch featurez
> git branch *featurez*
Have a look at all your branches:
@ -63,23 +68,23 @@ Have a look at all your branches:
Switch to your new branch:
> git checkout featurez
> git checkout *featurez*
And if your changes are rubbish, checkout the "master" branch again, then delete "featurez":
> git branch -D featurez
> git branch -D *featurez*
Or if it's a good branch, push it to the remote:
> git push origin featurez
> git push *origin* *featurez*
## Merging
Once you like the feature, merge it into the main branch. Switch to master then merge it:
> git merge featurez
> git merge *featurez*
and delete featurez as you've already merged it:
and delete `featurez` as you've already merged it:
> git branch -d featurez

View File

@ -1,6 +1,6 @@
---
title: "groff"
tags: [ "Documentation", "data" ]
tags: [ "Documentation", "Data" ]
---
# Basic Documents

View File

@ -1,6 +1,6 @@
---
title: "khard"
tags: [ "Documentation", "data" ]
tags: [ "Documentation", "Data" ]
---
Get the basic config:

View File

@ -1,10 +0,0 @@
---
title: "tricks"
tags: [ "Documentation", "data" ]
---
# Find data from any table
> pg_dump --data-only --inserts -U postgres your-db-name > a.tmp
> grep 'my string' a.tmp

View File

@ -1,57 +0,0 @@
#!/bin/bash
export TASKDDATA=/var/lib/taskd
echo Change CN to hostname
sleep 2
sudo vim /usr/share/doc/taskd/pki/vars
cd /usr/share/doc/taskd/pki/
sudo ./generate
mkdir -p $TASKDDATA
cp *.pem $TASKDDATA
chown -R root /var/lib/taskd
sudo cp *pem $TASKDDATA
chown -R taskd:taskd $TASKDDATA
taskd config "$user".cert=/var/lib/taskd/client.cert.pem
taskd config "$user".key=/var/lib/taskd/client.key.pem
taskd config "$(hostname)".cert=/var/lib/taskd/server.cert.pem
taskd config "$(hostname)".key=/var/lib/taskd/server.key.pem
taskd config "$(hostname)".crl=/var/lib/taskd/server.crl.pem
taskd config ca.cert=/var/lib/taskd/ca.cert.pem
taskd config --force server $(hostname):53589
systemctl start taskd
echo name a group
read group
echo name user
read user
taskd add org $group
taskd add user $group $user
./generate.client $user
echo "
taskd.server=alfred:port
taskd.credentials=$group/$user/key
taskd.certificate=~/.task/'$user'.cert.pem
taskd.key=~/.task/'$user'.key.pem
taskd.ca=~/.task/ca.cert.pem" >> /var/lib/taskd/config
tar cf $user.tar "$user"* ca.cert.pem

View File

@ -1,20 +1,71 @@
---
title: "task"
tags: [ "Documentation", "data" ]
tags: [ "Documentation", "Organization" ]
---
Set up the configuration file:
> task
Add a task:
> task add *update linux*
See which task is next:
> task next
Note the id number.
Mark a task as started:
> task start *1*
Once finished:
> task *1 done*
# Projects
Add a project:
> task add project:*house buy potted plant*
> task add proj:*house.repair buy screwdriver*
> task add proj:*house.repair buy shelf brackets*
3 task add pro:*house.paint buy white paint*
> task add pro:*house.paint buy red paint*
> task add pro:*house.paint buy black paint*
> task add pro:*house.paint buy brushes*
## Summary
> task pro:house sum
> task burndown.daily pro:house
The summaries will show how fast a project is being completed, and when you can expect it to finish at the present rate.
# Tags
> task add +buy toothbrush
You can then see only tasks which involve buying something with:
> task +buy
# Contexts
Set three contexts by their tags:
> task context define work +sa or +hr
> task context define *work +sa or +hr*
> task context define study +ed or +void or +rat
> task context define *study +ed or +void or +rat*
> task context define home -sa -hr -ed -void -rat
> task context define *home -sa -hr -ed -void -rat*
Change to the first context.
> task context work
> task context *work*
Then stop.
@ -26,16 +77,6 @@ View list of tasks completed in the last week:
> task end.after:today-1wk completed
# Timewarrior
> timew start ed 'learn timewarrior'
> timew stop
> timew summary
> timew tags
# User Defined Attributes
Make a UDA 'size'.
@ -48,3 +89,11 @@ Make a UDA 'size'.
> uda.size.default=medium
# Tricks
This command shows tasks I'm most interested in:
> task next +ACTIVE or +OVERDUE or due:today or scheduled:today or pri:H
The command is long, so `alias` is your friend.

View File

@ -1,183 +0,0 @@
---
title: "taskd"
tags: [ "Documentation", "data" ]
---
(instructions currently not working)
Switch to root to make things easier.
> yay -S
> export TASKDDATA=/var/lib/taskd
Edit `/usr/share/doc/taskd/pki/vars` so that ``CN'' = the hostname (IP is fine).
> cd /usr/share/doc/taskd/pki
Execute the `generate` file to generate a selfsigned certificate for the server. These will be \*.pem-files. Copy all \*.pem-files to /var/lib/taskd.
Make sure a copy of ca.cert.pem remains to generate user-certificates later.
# Taskd Configurations
> taskd config --force client.cert $TASKDDATA/client.cert.pem
> taskd config --force client.key $TASKDDATA/client.key.pem
> taskd config --force server.cert $TASKDDATA/server.cert.pem
> taskd config --force server.key $TASKDDATA/server.key.pem
> taskd config --force server.crl $TASKDDATA/server.crl.pem
> taskd config --force ca.cert $TASKDDATA/ca.cert.pem
# Change Taskd Log Location
The default is /tmp/log, which obviously you don't want.
> touch /var/log/taskd.log
> chown taskd:taskd /var/log/taskd.log
> taskd config --force log /var/log/taskd.log
Finally, set up the servername - the same one as in the certificates. Mine is ``testarch''.
> taskd config --force server testarch:9001
# Adding users
Let's add the group ``home'', then the user ``ghost'', will go in that group.
> taskd add org home
> taskd add user home ghost
`3f9e6154-25cb-4e45-88bb-45e98feef904`
> taskd add user home alfred
`4fbb319c-c493-437a-ab7a-028f5b75e522`
The user then gets a key.
Finally, make sure that taskd can read its own data>
> chown -R taskd:taskd /var/lib/taskd/orgs
... or perhaps the entire directory of /var/lib/taskd/.
Then it's back to /usr/share/doc/taskd/pki
Generate some userfiles:
> ./generate.client ghost
> ./generate.client alfred
The bob and ghost \*pem files have to be added to the given users' home directories.
# Setting up Users
> sudo apt-get install taskwarrior taskd
> task
Then move the \*pem files into the .task directory of the user.
Don't forget to add the ca.key.pem from `/usr/share/doc/taskd/pki`!
# Attempt 2
Well, none of that worked.
New info from [taskwarrior](https://gitpitch.com/GothenburgBitFactory/taskserver-setup#/1/4)
Default port = 53589
starting with
> taskd init
> taskd config server localhost:53589
View supported settings with `taskdrc`.
!!! Start with taskdctl start
Do a non-daemon version with
> taskd server --data $TASKDDATA --daemon
# Systemd Unit file
This needs to be edited for "$TASKDDATA", "$TASKDUSER", and "$TASKDGROUP".
```
Unit]
Description=Secure server providing multi-user, multi-client access to Taskwarrior data
Requires=network.target
After=network.target
Documentation=http://taskwarrior.org/docs/#taskd
[Service]
ExecStart=/usr/local/bin/taskd server --data $TASKDDATA
Type=simple
User=$TASKDUSER
Group=$TASKDGROUP
WorkingDirectory=$TASKDDATA
PrivateTmp=true
InaccessibleDirectories=/home /root /boot /opt /mnt /media
ReadOnlyDirectories=/etc /usr
[Install]
WantedBy=multi-user.target
```
Enable all this by copying the file to `/etc/systemd/system`, reload daemon, then start it.
Key for ghost:
29bd8a06-2cc0-4163-905d-6216257a3031
e29bffe0-72d8-45f2-b1f9-f29397cfab16
# Different:
$ task config taskd.certificate -- ~/.task/first_last.cert.pem
$ task config taskd.key -- ~/.task/first_last.key.pem
$ task config taskd.ca -- ~/.task/ca.cert.pem
# Trust
For troubleshooting we can set:
> taskd.trust=ignore [hostname]
> taskd.trust=allow all
> taskd.trust=strict
# User Defines Attributes - UDA
Each UDA has two to four attributes: type (numeric or string) and label are necessary:
> task config uda.THING.type {numeric,string}
> task config uda.THING.label Thg
Constrain these attributes to a comma-delineated set with:
> task config uda.THING.values brown,orange,green
You can also show how important the Attribute makes something:
> urgency.uda.THING.coefficient=2.8
# Aliases
Alias `delete' to `rm' with:
task config alias.rm delete

View File

@ -1,42 +0,0 @@
#!/bin/bash
# script currently not working
export TASKDDATA=/var/lib/taskd
sudo mkdir -p $TASKDDATA
sudo chown taskd:$(whoami) $TASKDDATA
sudo chmod 775 $TASKDDATA
cp -r /usr/share/doc/taskd/pki/ $TASKDDATA
cd $TASKDDATA/pki
sed -i s/localhost/$(hostname -f)/ vars
./generate
cp client.cert.pem $TASKDDATA
cp client.key.pem $TASKDDATA
cp server.cert.pem $TASKDDATA
cp server.key.pem $TASKDDATA
cp server.crl.pem $TASKDDATA
cp ca.cert.pem $TASKDDATA
taskd config --force client.cert $TASKDDATA/client.cert.pem
taskd config --force client.key $TASKDDATA/client.key.pem
taskd config --force server.cert $TASKDDATA/server.cert.pem
taskd config --force server.key $TASKDDATA/server.key.pem
taskd config --force server.crl $TASKDDATA/server.crl.pem
taskd config --force ca.cert $TASKDDATA/ca.cert.pem
cd $TASKDDATA/..
taskd config --force log $PWD/taskd.log
taskd config --force pid.file $PWD/taskd.pid
taskd config --force server $(hostname -f):53589
taskd add org public
# 1515de89-cc81-4af6-a6a4-41c1430620b0
journalctl -u taskd

View File

@ -1,11 +1,7 @@
---
title: "timew"
tags: [ "Documentation", "data" ]
tags: [ "Documentation", "Data" ]
---
# Setup
Below commands mostly deal with timew alone. With taskwarrior installed as well, `locate on-modify-time`, then add it to ~/.task/hooks and make it executable.
# Summaries
Try:
@ -153,3 +149,8 @@ with:
> python timew-dbcorrections.py
# Setup
With taskwarrior installed as well, `locate on-modify-time`, then add it to ~/.task/hooks and make it executable.
This will track the time of any tasks used with [taskwarrior](task.md).

View File

@ -1,49 +0,0 @@
---
title: "pi-hole-server"
tags: [ "Documentation", "distros" ]
---
> yay -S pi-hole-server
> sudo systemctl enable --now pihole-FTL
> sudo systemctl disable --now systemd-resolved
Add yourself as a pihole user, then logout, and log back in.
> sudo usermod -aG pihole $USER
Remove that google dns server.
> pihole -a setdns 9.9.9.9 1.0.0.1
Disable pihole password by setting a blank password.
> pihole -a -p
Get a new list of blocked domains, then reload:
> pihole -g -r
Every so often, run `pihole -g` again (perhaps put it in crontab).
# Configure cloudflare DNS
This is optional.
> yay -S cloudflared-bin
echo "proxy-dns: true
proxy-dns-upstream:
- https://1.0.0.1/dns-query
- https://1.1.1.1/dns-query
- https://2606:4700:4700::1111/dns-query
- https://2606:4700:4700::1001/dns-query
proxy-dns-port: 5053
proxy-dns-address: 0.0.0.0" > /etc/cloudflared/cloudflared.yml
echo "
PRIVACYLEVEL=0
IGNORE_LOCALHOST=no
AAAA_QUERY_ANALYSIS=yes

View File

@ -1,9 +0,0 @@
---
title: "problems"
tags: [ "Documentation", "distros" ]
---
Broken Xorg
> sudo X -configure

View File

@ -1,15 +0,0 @@
---
title: "basics"
tags: [ "Documentation", "distros" ]
---
> cd /etc/yum.repos.d/
> vim public.yum*
These are branches of the same Oracle server.
The first - 'latest' - is enabled by default.
You can change 'enabled' from 0 to 1 for various repositories.

View File

@ -1,6 +1,6 @@
---
title: "npm"
tags: [ "Documentation", "distros" ]
tags: [ "Documentation", "Distros" ]
---
package.json is the basic configuration file.

View File

@ -1,6 +1,6 @@
---
title: "yum"
tags: [ "Documentation", "distros" ]
tags: [ "Documentation", "Distros" ]
---
# Overview
@ -22,5 +22,3 @@ Major features: reliable, shit package selection.
yum remove [package1] [package2]

View File

@ -1,12 +0,0 @@
---
title: "http_server"
tags: [ "Documentation", "distros" ]
---
Nothing interesting.
1. Install
2. Set a dns resolver in /etc/resolv.conf (`nameserver 1.1.1.1` works)
3. Enable NetworkManager
3. zypper install http-something php5 apache2
4. vi /srv/www/htdocs/index.html
5. Enable apache2

View File

@ -1,13 +0,0 @@
#!/bin/bash
[ -z $1 ] && X=a || X=$1
ls /dev/sd"$X"2 || exit 1
mount /dev/sd"X"1 /mnt
mkdir /mnt/boot
for dir in dev proc sys; do
mkdir /mnt/$dir
mount --rbind /$dir /mnt/$dir
done
xbps-install -Sy -r /mnt base-system grub vim

View File

@ -1,6 +1,6 @@
---
title: "lxc"
tags: [ "Documentation", "distros" ]
tags: [ "Documentation", "Distros" ]
---
LXC creates miniature virtual machines to play with.

View File

@ -1,5 +1,5 @@
---
title: "basics"
title: "Void Linux Basics"
tags: [ "Documentation", "distros" ]
---

View File

@ -1,20 +0,0 @@
---
title: "basics"
tags: [ "Documentation", "hardware" ]
---
# Motherboard Information
> sudo dmidecode
Motherboard info, upgrading BIOS, memory capacity, LAN connections.
# Disks
View currently inserted disks:
lsblk
# CPU
> cat /proc/cpuinfo

View File

@ -1,27 +0,0 @@
---
title: "dns"
tags: [ "Documentation", "networking" ]
---
# Designate DNS
On Debian, a file might gain DNS services by adding the following to /etc/network/interfaces:
```
auto eth0
iface eth0 inet static
address 10.0.0.23
netmast 255.255.255.0
gateway 10.0.0.1
dns-nameservers 208.67.222.222 208.67.220.220
dns-search example.com
```
# URL Aliases
To change where hosts go, edit /etc/hostnames. You can enter, e.g.:
`54.239.25.200 www.amazon.com a`
... which then means simply the letter 'a' will lead you to amazon.com.

View File

@ -1,6 +1,6 @@
---
title: "fail2ban"
tags: [ "Documentation", "networking" ]
tags: [ "Documentation", "Networking" ]
---
# SSH Daemon Jail

View File

@ -1,5 +1,31 @@
---
title: "graph-easy"
tags: [ "Documentation" ]
---
Set up a file like this, called `troubleshooting.txt`.
```
[ Is there an IP address? ] -- no --> [ Check NIC driver, dmesg ]
[ Is there an IP address? ] -- yes --> [ Can you ping the router? ]
[ Can you ping the router? ] -- no --> [ Check cables, router, and switches ]
[ Can you ping the router? ] -- yes --> [ Can you ping a DNS address? ]
[ Can you ping a DNS address? ] -- no --> [ Trying pinging 8.8.8.8 ]
[ Can you ping a DNS address? ] -- yes --> [ Traceroute ]
```
Then translate it with:
> graph-easy troubleshooting.txt --as boxart
```
┌────────────┐ ┌─────────────────────────┐ yes ┌────────────────────────────────────┐ yes ┌─────────────────────────────┐ yes ┌────────────┐
│ no network │ ──> │ Is there an IP address? │ ─────> │ Can you ping the router? │ ─────> │ Can you ping a DNS address? │ ─────> │ Traceroute │
│ no Network │ ──> │ Is there an IP address? │ ─────> │ Can you ping the router? │ ─────> │ Can you ping a DNS address? │ ─────> │ Traceroute │
└────────────┘ └─────────────────────────┘ └────────────────────────────────────┘ └─────────────────────────────┘ └────────────┘
│ │ │
│ no │ no │ no
@ -7,3 +33,18 @@
┌─────────────────────────┐ ┌────────────────────────────────────┐ ┌─────────────────────────────┐
│ Check NIC driver, dmesg │ │ Check cables, router, and switches │ │ Trying pinging 8.8.8.8 │
└─────────────────────────┘ └────────────────────────────────────┘ └─────────────────────────────┘
```
Many options allow different displays.
Try placing this in a file:
```
[ One ] { fill: seagreen; color: white; } -- label --> [ Two ] { shape: triangle; }
[ One ] => { arrow-style: closed; } [ Three ]
[ Five ] { fill: maroon; color: yellow; } <=> [ Three ]
[ One ] .. Test\n label ..> [ Four ]
[ Three ] { border-style: dashed; }
.. Test\n label ..> { arrow-style: closed; } [ Six ] { label: Sixty\n Six\nand\nsix; }
[ Three ] <-- Test label --> { arrow-style: closed; } [ Six ]
[ Eight ] .. [ None ] { shape: none; fill: red; color: brown; }
[ no Network ] --> [ Is there an IP address? ]
```

View File

@ -1,12 +0,0 @@
[ One ] { fill: seagreen; color: white; } -- label --> [ Two ] { shape: triangle; }
[ One ] => { arrow-style: closed; } [ Three ]
[ Five ] { fill: maroon; color: yellow; } <=> [ Three ]
[ One ] .. Test\n label ..> [ Four ]
[ Three ] { border-style: dashed; }
.. Test\n label ..> { arrow-style: closed; } [ Six ] { label: Sixty\n Six\nand\nsix; }
[ Seven ] -- [ Eight ]
[ Five ] --> [ Eight ]
[ Five ] --> [ Seven ]
[ Two ] -> [ Four ]
[ Three ] <-- Test label --> { arrow-style: closed; } [ Six ]
[ Eight ] .. [ None ] { shape: none; fill: red; color: brown; }

View File

@ -1,15 +0,0 @@
[ no network ] --> [ Is there an IP address? ]
[ Is there an IP address? ] -- no --> [ Check NIC driver, dmesg ]
[ Is there an IP address? ] -- yes --> [ Can you ping the router? ]
[ Can you ping the router? ] -- no --> [ Check cables, router, and switches ]
[ Can you ping the router? ] -- yes --> [ Can you ping a DNS address? ]
[ Can you ping a DNS address? ] -- no --> [ Trying pinging 8.8.8.8 ]
[ Can you ping a DNS address? ] -- yes --> [ Traceroute ]

View File

@ -1,6 +1,6 @@
---
title: "iptables"
tags: [ "Documentation", "networking" ]
tags: [ "Documentation", "Networking" ]
---
# Intro
@ -24,7 +24,7 @@ Let's 'A'dd, or 'A'ppend a rule with -A. Let's drop all input from a nearby IP
> iptables -A INPUT -s 192.168.0.23 -j DROP
Or we can block all input from a particular port on the full network.
Or we can block all input from a particular port on the full Network.
> iptables -A INPUT -s 192.168.0.0/24 -p tcp --destination-port 25 -j DROP
@ -55,3 +55,26 @@ Flush all existing rules with:
> iptables -F
# Examples
```
# Allow all loopback (lo0) traffic and drop all traffic to 127/8
# that doesn't use lo0
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
iptables -A INPUT -d 127.0.0.0/8 ! -i lo -j REJECT --reject-with icmp-port-unreachable
# Allow established sessions to receive traffic
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# Allow ICMP pings
iptables -A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
# Allow SSH remote
iptables -I INPUT -p tcp --dport 22 -j ACCEPT
# Reject all other inbound connections
iptables -A INPUT -j REJECT --reject-with icmp-port-unreachable
iptables -A FORWARD -j REJECT --reject-with icmp-port-unreachable
```

View File

@ -1,19 +0,0 @@
#!/bin/sh
# Allow all loopback (lo0) traffic and drop all traffic to 127/8
# that doesn't use lo0
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
iptables -A INPUT -d 127.0.0.0/8 ! -i lo -j REJECT --reject-with icmp-port-unreachable
# Allow established sessions to receive traffic
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# Allow ICMP pings
iptables -A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
# Allow SSH remote
iptables -I INPUT -p tcp --dport 22 -j ACCEPT
# Reject all other inbound connections
iptables -A INPUT -j REJECT --reject-with icmp-port-unreachable
iptables -A FORWARD -j REJECT --reject-with icmp-port-unreachable

View File

@ -1,56 +0,0 @@
---
title: "iptables"
tags: [ "Documentation", "networking" ]
---
# Intro
This is a basic Linux firewall program.
Look at your firewalls:
> iptables -L
We see the output of input, output and forwarding rules.
# Forward
I don't need any forwarding, so I'm going to drop all forwarding:
> iptables -P FORWARD DROP
# Input
Let's 'A'dd, or 'A'ppend a rule with -A. Let's drop all input from a nearby IP
> iptables -A INPUT -s 192.168.0.23 -j DROP
Or we can block all input from a particular port on the full network.
> iptables -A INPUT -s 192.168.0.0/24 -p tcp --destination-port 25 -j DROP
> iptables -A INPUT --dport 80 -j ACCEPT
This allows http traffic to an Apache web server over port 80.
However, rules are accepted in order - so a packet cannot be rejected and then accepted.
To delete rule 2 from the INPUT chain:
> iptables -D INPUT 3
Alternatively, you can 'I'nsert a rule at the start, rather than 'A'ppending it.
> iptables -I INPUT -s 192.168.0.13 DROP
# Catchalls
Catchall rules state that anything which is not permitted is forbidden. They must be allowed last.
# -Jurice-Diction
The -j flag accepts ACCEPT/REJECT/DROP. The last two are identical except that "REJECT" acknowledges the rejection.
Flush all existing rules with:
> iptables -F

File diff suppressed because it is too large Load Diff

View File

@ -1,6 +1,6 @@
---
title: "protocols"
tags: [ "Documentation", "networking" ]
tags: [ "Documentation", "Networking" ]
---
# Protocols
@ -16,7 +16,7 @@ tags: [ "Documentation", "networking" ]
## IPv4
Three address ranges pertain only to private networks, so no computer looks beyond the local router to resolve them:
Three address ranges pertain only to private Networks, so no computer looks beyond the local router to resolve them:
10.0.0.0 to 10.255.255.255
@ -24,7 +24,7 @@ Three address ranges pertain only to private networks, so no computer looks beyo
192.168.0.0 to 192.168.255.255
In theory, networks should fall within one of 3 ranges, depending upon their first octet:
In theory, Networks should fall within one of 3 ranges, depending upon their first octet:
Class A 1-127
@ -63,13 +63,13 @@ Add an interface to a device as so:
> sudo ip a add 192.168.0.15/255.255.255.0 dev eth1
See network interfaces available on Fedora with:
See Network interfaces available on Fedora with:
> less /etc/sysconfig/network-scripts/ifcfg-enp2s0f0
> less /etc/sysconfig/Network-scripts/ifcfg-enp2s0f0
or on Debian with:
> less /etc/network/interfaces
> less /etc/Network/interfaces
Mostly, interfaces will receive automatic addresses from a DHCP server. If this hasn't happened for you, you can request a dhcp address with:

View File

@ -1,6 +1,6 @@
---
title: "basics"
tags: [ "Documentation", "networking" ]
title: "Networking"
tags: [ "Documentation", "Networking", "ip" ]
---
# You
@ -53,12 +53,12 @@ The starting numbers tell you about the address. You just have to memorize the m
|:---:|:---:|
| 127.X | The computer's name for itself, for when you want to ssh into your own machine |
| ::1/128 | Same thing, with ipv6 |
| 192.168.X | A small network address, given by a DHCP server (possibly your router) |
| 192.168.X | A small Network address, given by a DHCP server (possibly your router) |
| 169.X | The interface to the internet wasn't given an ip address, so it's made up its own |
# `arp-scan`
Look around your local network with `arp-scan`.
Look around your local Network with `arp-scan`.
> sudo arp-scan -l
@ -85,7 +85,7 @@ Mac addresses are easy to fake, so don't trust this output to keep you safe.
# `nmap`
Look around your entire network from 192.168.0.1 to 192.168.0.255:
Look around your entire Network from 192.168.0.1 to 192.168.0.255:
> sudo nmap -F 192.168.0.1/24

View File

@ -1,6 +1,6 @@
---
title: "nmap"
tags: [ "Documentation", "networking" ]
tags: [ "Documentation", "Networking" ]
---
Example:

View File

@ -0,0 +1,56 @@
---
title: "pi-hole-server"
tags: [ "Documentation", "Distros" ]
---
# Installation
## Arch
> yay -S pi-hole-server
> sudo systemctl enable --now pihole-FTL
> sudo systemctl disable --now systemd-resolved
> sudo rm -f /dev/shm/FTL-\*
## Debian
Debian has a long, boring setup.
> sudo apt-get install wget curl net-tools gamin lighttpd lighttpd-mod-deflate
> curl -sSL https://install.pi-hole.net | PIHOLE_SKIP_OS_CHECK=true sudo -E bash
# Setup
> sudo usermod -aG pihole $USER
Remove that google dns server.
> pihole -a setdns 9.9.9.9 1.0.0.1
Disable pihole password by setting a blank password.
> pihole -a -p
Get a new list of blocked domains, then reload:
> pihole -g -r
Every so often, run `pihole -g` again (perhaps put it in crontab).
## Check the Pihole
Observe the pihole's output while you ask it a question:
> pihole -t
Then ask the question from another computer:
> dig @[ pihole ip ] archlinux.org
## System-Wide Setup
To make the pihole work for the entire Network, enter your router and set the DNS server as nothing but your pihole.

View File

@ -1,30 +0,0 @@
---
title: "pihole"
tags: [ "Documentation", "networking" ]
---
View DNS traffic
> pihole -t
Change password
> pihole -a -p
Get new list of cancer
> pihole -g
Change upstream DNS
> sudo vim /etc/dnsmasq/01-pihole.conf
## Troubleshooting
> sudo usermod -aG pihole $USER
> sudo systemctl stop systemd-resolved
> sudo rm -f /dev/shm/FTL-*
> pihole -g -r

View File

@ -1,9 +1,21 @@
---
title: "pip"
tags: [ "Documentation", "networking" ]
tags: [ "Documentation", "Networking" ]
---
Searching does not work.
Install with:
> pip install [ package ]
Upgrade all packages
> pip freeze --local | grep -v '^\-e' | cut -d = -f 1 | xargs -n1 pip install -U
# Troubleshooting
You may need a python3 package.
In this case, try:
> pip3 install [ package ]

View File

@ -1,6 +1,6 @@
---
title: "rclone"
tags: [ "Documentation", "networking" ]
tags: [ "Documentation", "Networking" ]
---
The manpage's 'Synopsis' provides a fast reference.

View File

@ -1,6 +1,6 @@
---
title: "screen"
tags: [ "Documentation", "networking" ]
tags: [ "Documentation", "Networking" ]
---
start session: screen
@ -46,8 +46,10 @@ Screens have a list of commands to send
------Example----------
Start a new session with 'screen -S base' (which calls that session 'base'). Make a horizontal split with ^|, move into it with ^tab then create a new screen with ^c in that second split. The new screen can be named with ^A as 'music' before entering cmus. Next up, visualizations with vis in another screen. ^S makes a horizontal split and you can switch into that with ^tab to name is 'visualizations' and start vis. Switch back to the first screen and make another horizontal split and a screen in there with the name 'reading'. Inside reading you type ^? to get a list of useless screen commands. Reading can then be detatched with ^d and the horizontal split destroyed with ^X.
Those visualizations should be larger, so we enlarge them with Ctrl+: to send the command resize 50 and :resize -h 100.
Once done with reading, you can destroy it wil ^k then destroy the lot once done with ^\. Outside the screens entirely you can ensure complete death with 'killall screen'.
Those visualizations should be larger, so we enlarge them with Ctrl+: to send the command resize 50 and :resize -h 100.
Once done with reading, you can destroy it wil ^k then destroy the lot once done with ^\. Outside the screens entirely you can ensure complete death with 'killall screen'.
----------------------

View File

@ -1,9 +1,9 @@
---
title: "agate"
tags: [ "Documentation", "networking" ]
tags: [ "Documentation", "Networking" ]
---
Make sure your dns is in order.
My domain name is `belgradecats.tk`, so put your own in there.
My domain name is `malinfreeborn.com`, so put your own in there.
Install agate by placing the binary somewhere or (on Arch):
@ -27,16 +27,19 @@ Make a service file.
> sudo vim /etc/systemd/system/multi-user.target.wants/agate.service
Start agate once to make the certificates.
> agate --content /usr/share/gemini/gemini --hostname malinfreeborn.com --lang en-GB
```
[Unit]
Description=agate
After=network.target
After=Network.target
[Service]
User=gemini
Type=simple
ExecStart=/usr/bin/agate -s --content /usr/share/gemini/gemini --key /usr/share/gemini/certs/key.pem --cert /usr/share/gemini/certs/cert.pem --hostname belgradecats.tk --lang en-GB
ExecStart=/usr/bin/agate --content /usr/share/gemini/gemini --hostname malinfreeborn.com --lang en-GB
[Install]
WantedBy=default.target

View File

@ -1,6 +1,6 @@
---
title: "sshfs"
tags: [ "Documentation", "networking" ]
tags: [ "Documentation", "Networking" ]
---
# Mount

View File

@ -1,11 +1,11 @@
---
title: "tricks"
tags: [ "Documentation", "networking" ]
title: "ssh tricks"
tags: [ "Documentation", "Networking", "ssh", "tricks" ]
---
Mount a remote filesystem locally with fuse-sshfs:
> sshfs ghost@192.168.0.10:/home/ghost /tmp/mnt
> sshfs *user*@192.168.0.10:/home/*user* /tmp/mnt
Unmount with:
@ -17,5 +17,5 @@ Set it up on /etc/fstab with:
Make image backup of sda1 and sda2 from one machine and pass it through ssh to another.
> for i in {1,2};do sudo dd if=/dev/sda$i | ssh -C ghost@192.168.0.10 "dd of=/mnt/Biggie/Backup/winback-oct-\"$i\".img" status=progress; done
> for i in {1,2};do sudo dd if=/dev/sda$i | ssh -C *user*@192.168.0.10 "dd of=/mnt/Backup/winback-oct-\"$i\".img" status=progress; done

View File

@ -1,6 +1,6 @@
---
title: "tor"
tags: [ "Documentation", "networking" ]
tags: [ "Documentation", "Networking" ]
---
# Get a hostname

View File

@ -1,6 +1,6 @@
---
title: "transmission"
tags: [ "Documentation", "networking" ]
tags: [ "Documentation", "Networking" ]
---
# Torrench

View File

@ -1,11 +1,11 @@
---
title: "troubleshooting"
tags: [ "Documentation", "networking" ]
tags: [ "Documentation", "Networking" ]
---
# Do you have an IP?
If not, try checking out what your local networking interfaces are, then check if they have been picked up:
If not, try checking out what your local Networking interfaces are, then check if they have been picked up:
> dmesg | grep eth0
@ -13,8 +13,7 @@ If not, try checking out what your local networking interfaces are, then check i
> netstat -l
... or maybe narrow it down to http:
...or maybe narrow it down to http:
> netstat -l | grep http

View File

@ -1,9 +0,0 @@
┌────────────┐ ┌─────────────────────────┐ yes ┌────────────────────────────────────┐ yes ┌─────────────────────────────┐ yes ┌────────────┐
│ no network │ ──> │ Is there an IP address? │ ─────> │ Can you ping the router? │ ─────> │ Can you ping a DNS address? │ ─────> │ Traceroute │
└────────────┘ └─────────────────────────┘ └────────────────────────────────────┘ └─────────────────────────────┘ └────────────┘
│ │ │
│ no │ no │ no
┌─────────────────────────┐ ┌────────────────────────────────────┐ ┌─────────────────────────────┐
│ Check NIC driver, dmesg │ │ Check cables, router, and switches │ │ Trying pinging 8.8.8.8 │
└─────────────────────────┘ └────────────────────────────────────┘ └─────────────────────────────┘

View File

@ -1,67 +0,0 @@
---
title: "unison"
tags: [ "Documentation", "networking" ]
---
# Local Sync
unison Dir_A Dir_B
Accept defaults with:
> unison -auto Dir_A Dir_B
Ask no questions with:
> unison -batch Dir_A Dir_B
# Remote Sync
Sync the folders ~/LK on pi and localhost with:
> unison LK ssh://pi@192.168.0.13/LK
#Back Script Example
Make backup script 'rat' by entering the configurations in ~/.unison/rat.prf
```{r}
# Where to synchronize from
root=/home/roach-1/
root=ssh://ubuntu@10.0.3.76/
auto = true
batch = true
## for ssh arguments, add as so:
#sshargs=-p 4792
## Directories to synchronize
## a path such as 'Album 1' will not work - don't use quotes.
path=box 1
path=box 2
path=house
path=.vimrc
path=.bashrc
ignore=Name temp.*
ignore=Name *.swp
## Merging
## This line handles the merge, but it's based on Emacs, which cannot run in a tty, but requires X.
diff = diff -u CURRENT2 CURRENT1 | perl -pe 's/^\+/>/; s/^\-/</'
```
# Scheduled Backups
A full backup can be run with:
> unison rat.prf
And a crontab can be set with:
* */4 * * * /usr/bin/unison rat

View File

@ -1,6 +1,6 @@
---
title: "nginx"
tags: [ "Documentation", "networking" ]
tags: [ "Documentation", "Networking" ]
---
Install nginx:

View File

@ -1,6 +1,6 @@
---
title: "wifi"
tags: [ "Documentation", "networking" ]
tags: [ "Documentation", "Networking" ]
---
# Netstat Stuff
@ -50,19 +50,21 @@ This tells you that your ESSID is 'Gandalf WajFaj', and the access point name is
> nmcli radio
You get an overview of your radio devices. You're told that eth0 deals with your ethernet and wlan0 deals with wifi. wlan0 is a file which represents your wifi device.
You get an overview of your radio devices.
You're told that eth0 deals with your ethernet and `wlan0` deals with wifi.
`wlan0` is a file which represents your wifi device.
> nmcli wlan0 wifi rescan
> nmcli device wifi list
Now to connect.
Now to connect.
> nmcli device wifi connect [SSID] [your password] [wifi password]
Alternatively, you can use
Alternatively, you can use
> nmcli -ask device wifi connect [SSID]
And it'll ask for your password, so you're not typing it in in full view.
And it'll ask for your password, so you're not typing it in in full view.

View File

@ -1,6 +1,6 @@
---
title: "wireless"
tags: [ "Documentation", "networking" ]
tags: [ "Documentation", "Networking" ]
---
# Check wifi's working

View File

@ -1,6 +1,6 @@
---
title: "wpa_supplicant"
tags: [ "Documentation", "networking" ]
tags: [ "Documentation", "Networking" ]
---
wpa_supplicant configurations are stored in /etc/wpa_supplicant/wpa_supplicant-wlan0 (or equivalent).
@ -33,23 +33,23 @@ This has a number of commands to input. In order:
> scan_results
> add_network
> add_Network
This outputs a network number, e.g. '3'. This is the new network you'll work with.
This outputs a Network number, e.g. '3'. This is the new Network you'll work with.
> set_network 3 ssid "Kosachok Cafe"
> set_Network 3 ssid "Kosachok Cafe"
> set_network 3 psk "Kosachok2019"
> set_Network 3 psk "Kosachok2019"
OR
> set_network 3 key_mgmt NONE
> set_Network 3 key_mgmt NONE
> enable_network 3
> enable_Network 3
> save_config
... and possibly:
...and possibly:
> sudo sv restart dhcpcd
@ -57,4 +57,3 @@ or maybe:
> dhcpd wlp3s0

View File

@ -1,6 +1,6 @@
---
title: "festival"
tags: [ "Documentation", "sound" ]
tags: [ "Documentation", "Sound" ]
---
# Basics

View File

@ -1,6 +1,6 @@
---
title: "ffmpeg"
tags: [ "Documentation", "sound" ]
tags: [ "Documentation", "Sound" ]
---
# Basics

View File

@ -1,6 +1,6 @@
---
title: "mpd"
tags: [ "Documentation", "sound" ]
tags: [ "Documentation", "Sound" ]
---
# Setup

View File

@ -1,6 +1,6 @@
---
title: "ncmpcpp"
tags: [ "Documentation", "sound" ]
tags: [ "Documentation", "Sound" ]
---
# Music Player Daemon

View File

@ -1,8 +1,9 @@
---
title: "basics"
tags: [ "Documentation", "sound" ]
tags: [ "Documentation", "Sound" ]
---
# Pulse
If you have pulse, use pulse.
Check with `which pulseaudio`. No output means you need to use alsa (below).
@ -19,11 +20,11 @@ Find working outputs:
Surround.5 seems best.
# Find what sound settings exist
# Find what Sound settings exist
amixer scontrols
# Change a sound setting
# Change a Sound setting
> amixer set Master 5%-
@ -49,8 +50,8 @@ Start with:
> alsamixer
Then press `F6` to see available sound cards.
If you find a sound card called 'PinePhone', then you can select an audio source there, and adjust with:
Then press `F6` to see available Sound cards.
If you find a Sound card called 'PinePhone', then you can select an audio source there, and adjust with:
> amixer -c PinePhone set 'Headphone' 50%

View File

@ -1,6 +1,6 @@
---
title: "youtube-dl"
tags: [ "Documentation", "sound" ]
tags: [ "Documentation", "Sound" ]
---
> youtube-dl --write-auto-sub <URL>

View File

@ -1,6 +1,6 @@
---
title: "X"
tags: [ "Documentation", "system" ]
tags: [ "Documentation", "System" ]
---
X is a server which listens to requests for display.

View File

@ -1,6 +1,6 @@
---
title: "android"
tags: [ "Documentation", "system" ]
tags: [ "Documentation", "System" ]
---
# mtpfs

View File

@ -1,6 +1,6 @@
---
title: "awk"
tags: [ "Documentation", "system" ]
tags: [ "Documentation", "System" ]
---
# Basics

View File

@ -1,6 +1,6 @@
---
title: "bash_tricks"
tags: [ "Documentation", "system" ]
tags: [ "Documentation", "System" ]
---
# Automatic mp3 Tagging

View File

@ -1,6 +1,6 @@
---
title: "character-encoding"
tags: [ "Documentation", "system" ]
tags: [ "Documentation", "System" ]
---
Convert a text file from one encoding type to another with:

View File

@ -1,6 +1,6 @@
---
title: "compression"
tags: [ "Documentation", "system" ]
tags: [ "Documentation", "System" ]
---
# Tar

View File

@ -1,6 +1,6 @@
---
title: "cronie"
tags: [ "Documentation", "system" ]
tags: [ "Documentation", "System" ]
---
Various services from cron exist, e.g.
@ -9,7 +9,7 @@ Various services from cron exist, e.g.
start the cronie with
> sudo systemctl start cronie
> sudo Systemctl start cronie
start a cron with

View File

@ -1,6 +1,6 @@
---
title: "e-mail"
tags: [ "Documentation", "system" ]
tags: [ "Documentation", "System" ]
---
# Terminology

View File

@ -1,10 +1,10 @@
---
title: "editors"
tags: [ "Documentation", "system" ]
tags: [ "Documentation", "System" ]
---
The system's default text editor can be defined within /etc/profile. It's given the variable `EDITOR`.
The System's default text editor can be defined within /etc/profile. It's given the variable `EDITOR`.
Add these lines to /etc/profile:
Add these lines to `/etc/profile.d/local.sh`:
```

View File

@ -1,6 +1,6 @@
---
title: "elvish"
tags: [ "Documentation", "system" ]
tags: [ "Documentation", "System" ]
---
# Setup
To run a shell as non-root, the shell must be listed in /etc/shells.

View File

@ -1,6 +1,6 @@
---
title: "kernel"
tags: [ "Documentation", "system" ]
tags: [ "Documentation", "System" ]
---
Check which kernet modules are loaded into memory

View File

@ -1,6 +1,6 @@
---
title: "logs"
tags: [ "Documentation", "system" ]
tags: [ "Documentation", "System" ]
---
# Basic

View File

@ -1,6 +1,6 @@
---
title: "partitions"
tags: [ "Documentation", "system" ]
tags: [ "Documentation", "System" ]
---
# FDisk Basics
@ -27,7 +27,7 @@ Note the asterisk marking the boot partition.
fdisk will not help with a GPT formatted drive. For this, use gdisk, which is mostly the same.
Now that we have a partition, we can make it into a filesystem. Most will use:
Now that we have a partition, we can make it into a fileSystem. Most will use:
> sudo mkfs -t ext4 /dev/sdc1
@ -35,7 +35,7 @@ or if you're making a swap partition, you can use:
> sudo mkswap /dev/sdb2
or for the reiser filesystem, we can use:
or for the reiser fileSystem, we can use:
> sudo mkreiserfs /dev/sdc2
@ -65,7 +65,7 @@ or divide things by inode - the thing which records where files are?
> df -i
Examine a filesystem with:
Examine a fileSystem with:
> sudo dumpe2fs /dev/sda1 | less
@ -78,12 +78,12 @@ This will check sda1 every 30 boots. It can also be checked every month.
> sudo tune2fs -i 1m /dev/sda1
This thing can also make a new label for the system:
This thing can also make a new label for the System:
> sudo tune2fs -L new_name /dev/sdb3
# Repair
Start by unmounting the filesystem.
Start by unmounting the fileSystem.
> sudo umount /dev/sdc1
@ -112,15 +112,15 @@ or if you don't know the type, just try the lot:
# File Systems
xfs and zfs can only be expanded.
# Shrink Filesystem
# Shrink FileSystem
NB: When I followed these instructions, the process destroyed my data. Seemed fine on the YouTube video.
Check the filesystem's health:
Check the fileSystem's health:
> sudo e2fsck -f /dev/sdb1
Resize the file system to something smaller than what you want, so here I want 500G and so I resize to 450 G.
Resize the file System to something smaller than what you want, so here I want 500G and so I resize to 450 G.
> resize2fs /dev/sdb1 450G
@ -130,7 +130,7 @@ Then delete the partition with either gdisk or fdisk, depending upon the layout.
> d
Then make a new filesystem of the desired type with:
Then make a new fileSystem of the desired type with:
> n

View File

@ -1,12 +1,6 @@
---
title: "snaps"
tags: [ "Documentation", "system" ]
tags: [ "Documentation", "System", "Ubuntu", "snap" ]
---
> sudo apt-get purge -y snapd
#Hiding from Nautilus
> echo snap >> ~/.hidden
Moving the directory ~/snap to ~/.snap acts as expected.

View File

@ -1,6 +1,6 @@
---
title: "journal"
tags: [ "Documentation", "system" ]
tags: [ "Documentation", "systemd" ]
---
Find errors since November

View File

@ -1,6 +1,6 @@
---
title: "Making Services"
tags: [ "Documentation", "system" ]
tags: [ "Documentation", "systemd" ]
---
# Basics

View File

@ -1,27 +0,0 @@
---
title: "users"
tags: [ "Documentation", "system" ]
---
# Automatic Login
> cp /usr/lib/systemd/system/getty@.service /etc/systemd/system/getty1@.service
Modify the lines to look like these:
`ExecStart=-/sbin/agetty --autologin <username> --noclear %I 38400 linux`
`Type=oneshot`
`Restart=no`
In the `[Install]` section:
`Alias=getty.target.wants/getty@tty1.service`
Then enable the service:
> ln -sf /etc/systemd/system/getty1@.service /etc/systemd/system/getty.target.wants/getty@tty9.service
> systemctl start getty@tty9.service

View File

@ -1,6 +1,6 @@
---
title: "tmux"
tags: [ "Documentation", "system" ]
tags: [ "Documentation", "System" ]
---
Start with:

View File

@ -1,11 +0,0 @@
---
title: "upx"
tags: [ "Documentation", "system" ]
---
upx compresses binaries, so they take up less disk space, but take longer to start.
Make a binary, such as ls, compressed:
> upx ls

View File

@ -1,5 +1,5 @@
---
title: "urxvt"
tags: [ "Documentation", "system" ]
tags: [ "Documentation", "System" ]
---
Perl scripts typically kept in /usr/lib/urxvt/perl

View File

@ -1,5 +0,0 @@
---
title: "wine"
tags: [ "Documentation", "system" ]
---
maybe run \n> sudo dpkg --add-architecture i386

Some files were not shown because too many files have changed in this diff Show More