mirror of
https://github.com/AlexBocken/mykb.git
synced 2024-11-25 15:59:45 +01:00
Compare commits
3 Commits
a4e9e4ae1b
...
48ad81b8d0
Author | SHA1 | Date | |
---|---|---|---|
48ad81b8d0 | |||
c392dbe430 | |||
63146f2419 |
15
README.md
15
README.md
@ -1,9 +1,20 @@
|
|||||||
# mykb
|
# mykb
|
||||||
My knowledge base for misc. linux desktop and server setups/configurations
|
My knowledge base for misc. linux desktop and server setups/configurations
|
||||||
|
This is a collaborative effort of Till Dieminger and me as our needs are similar enough to warrant a shared knowledge base.
|
||||||
|
|
||||||
For dekstop environments a heavy Arch bias is to be expected but a lot of stuff can be applied in many distros. Switching out pacman/paru for the appropriate package manager of your choice will have to be done of course.
|
For dekstop environments a heavy Arch bias is to be expected but a lot of stuff can be applied in many distros.
|
||||||
|
Switching out pacman/paru for the appropriate package manager of your choice will have to be done of course.
|
||||||
|
|
||||||
For server stuff I'm mostly using Debian. See [landchad.net](https://landchad.net) for a similar project centered around mostly server stuff.
|
For server stuff I have been mostly using Debian. Newer additions will assume Arch Linux on your server.
|
||||||
|
This is because of Debian's ancient versions of software (python 3.7 is over 5 years old now) and the resultant overuse of docker or installing everything from source.
|
||||||
|
If I `git clone` all my software why do I even need a package manager?
|
||||||
|
To struggle with stupidly outdated versions of `python` and `nodejs`? No thanks.
|
||||||
|
|
||||||
|
Newer additions will assume Arch Linux on your server.
|
||||||
|
Most should be compatible with Debian as well though as Arch oftentimes just ships more minimalistic configs.
|
||||||
|
Assuming of course that the two distros versions are comptatible.
|
||||||
|
|
||||||
|
See [landchad.net](https://landchad.net) for a similar project centered around mostly server stuff.
|
||||||
|
|
||||||
## Current state
|
## Current state
|
||||||
|
|
||||||
|
@ -3,6 +3,8 @@
|
|||||||
### Goal
|
### Goal
|
||||||
|
|
||||||
- Set up a own caldav server which allows to sync [calcurse](https://www.calcurse.org/) with your other devices.
|
- Set up a own caldav server which allows to sync [calcurse](https://www.calcurse.org/) with your other devices.
|
||||||
|
If you want to run nextcloud anyways, you can also use its caldav server.
|
||||||
|
This is a more light weight solution, which does not require a full php environment.
|
||||||
|
|
||||||
### Software used
|
### Software used
|
||||||
|
|
||||||
|
@ -6,7 +6,21 @@ We'll be using PHP-FPM as this is the recommended way and nginx is easier to set
|
|||||||
|
|
||||||
TODO
|
TODO
|
||||||
|
|
||||||
|
## Syncing files with Nextcloud
|
||||||
|
They GUI for syncing is surprisingly unusable, luckily the CLI is much better.
|
||||||
|
On Arch Linux you can install the `nextcloud-client` package.
|
||||||
|
Syncing should now be a simple
|
||||||
|
|
||||||
|
```
|
||||||
|
nextcloudcmd -u "email@example.com" --password "$(pass <your_password_path> | head -n1)" <local_folder_for_syncing> https://cloud.example.com
|
||||||
|
```
|
||||||
|
Of course adjust to your setup.
|
||||||
|
Adding `-s` will make it sync a bit less verbose.
|
||||||
|
|
||||||
## Setup a drop-off folder in Nextcloud
|
## Setup a drop-off folder in Nextcloud
|
||||||
|
This is a quite useful feature to allow others to upload files to your Nextcloud without having to create an account.
|
||||||
|
Very user-friendly for non-technical people to share high-resolution photos for example.
|
||||||
|
The share link can also be password-protected such that not everyone can upload files to your server.
|
||||||
|
|
||||||
1. Create a folder in Nextcloud, e.g. `Drop-off`.
|
1. Create a folder in Nextcloud, e.g. `Drop-off`.
|
||||||
2. Click on the share icon and under share link select "File-drop". This will create a link that you can share with others.
|
2. Click on the share icon and under share link select "File-drop". This will create a link that you can share with others.
|
||||||
@ -23,9 +37,170 @@ location /dropoff {
|
|||||||
```
|
```
|
||||||
|
|
||||||
## Sync contacts with khard
|
## Sync contacts with khard
|
||||||
TODO
|
We are using `vdirsyncer` to sync our contacts with Nextcloud. For this, install it:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
sudo pacman -S vdirsyncer
|
||||||
|
```
|
||||||
|
|
||||||
|
Then create a config file `~/.config/vdirsyncer/config` with the following content:
|
||||||
|
```
|
||||||
|
[general]
|
||||||
|
status_path = "~/.config/vdirsyncer/status/"
|
||||||
|
|
||||||
|
[pair nextcloud_contacts]
|
||||||
|
a = "nextcloud_contacts_local"
|
||||||
|
b = "nextcloud_contacts_remote"
|
||||||
|
collections = ["from a", "from b"]
|
||||||
|
|
||||||
|
[storage nextcloud_contacts_local]
|
||||||
|
type = "filesystem"
|
||||||
|
path = "~/.local/share/vdirsyncer/"
|
||||||
|
fileext = ".vcf"
|
||||||
|
|
||||||
|
[storage nextcloud_contacts_remote]
|
||||||
|
type = "carddav"
|
||||||
|
url = "https://cloud.example.com/remote.php/dav/addressbooks/users/<your_user>/contacts/"
|
||||||
|
auth = "basic"
|
||||||
|
username = "<your_user>"
|
||||||
|
password.fetch = ["shell", "pass <your_password_path> | head -n1"]
|
||||||
|
```
|
||||||
|
Note that <your_user> is not your email address but the username you can also use to login into nextcloud.
|
||||||
|
You can find it under https://cloud.example.com/settings/users as the smaller text under your display name.
|
||||||
|
|
||||||
|
Add to your `~/.config/khard/khard.conf`:
|
||||||
|
```
|
||||||
|
[addressbooks]
|
||||||
|
[[nextcloud]]
|
||||||
|
path = ~/.local/share/vdirsyncer/contacts/
|
||||||
|
```
|
||||||
|
And create `~/.local/share/vidirsyncer/contacts` if not already existing.
|
||||||
|
We will use this folder to store our contacts.
|
||||||
|
|
||||||
|
Initial discovery requires you to run
|
||||||
|
|
||||||
|
```sh
|
||||||
|
vdirsyncer discover nextcloud_contacts
|
||||||
|
```
|
||||||
|
once.
|
||||||
|
You should now be able to sync your contacts with `vdirsyncer sync` and view them with `khard`.
|
||||||
|
|
||||||
|
### Cronjob
|
||||||
|
You can now of course add `vdirsyncer sync` to your cronjob to sync your contacts regularly.
|
||||||
|
Keep in mind that this will require additional environment variables for pass to work as well, sourcing your `.zprofile` should do the trick with a correct setup.
|
||||||
|
Ergo your cronjob should look something like this:
|
||||||
|
|
||||||
|
```cron
|
||||||
|
*/15 * * * * . ~/.zprofile && vdirsyncer sync
|
||||||
|
```
|
||||||
See [neomutt.md](./neomutt.md) for more details on how to use khard with neomutt for autocompletion.
|
See [neomutt.md](./neomutt.md) for more details on how to use khard with neomutt for autocompletion.
|
||||||
|
|
||||||
## Sync Calendar with Calcurse
|
## Sync Calendar with Calcurse
|
||||||
TODO
|
|
||||||
|
Create a config file `~/.config/calcurse/caldav/config`. You can use the following template:
|
||||||
|
```
|
||||||
|
# If you want to synchronize calcurse with a CalDAV server using
|
||||||
|
# calcurse-caldav, create a new directory at $XDG_CONFIG_HOME/calcurse/caldav/
|
||||||
|
# (~/.config/calcurse/caldav/) and $XDG_DATA_HOME/calcurse/caldav/
|
||||||
|
# (~/.local/share/calcurse/caldav/) and copy this file to
|
||||||
|
# $XDG_CONFIG_HOME/calcurse/caldav/config and adjust the configuration below.
|
||||||
|
# Alternatively, if using ~/.calcurse, create a new directory at
|
||||||
|
# ~/.calcurse/caldav/ and copy this file to ~/.calcurse/caldav/config and adjust
|
||||||
|
# the configuration file below.
|
||||||
|
|
||||||
|
[General]
|
||||||
|
# Path to the calcurse binary that is used for importing/exporting items.
|
||||||
|
Binary = calcurse
|
||||||
|
|
||||||
|
# Host name of the server that hosts CalDAV. Do NOT prepend a protocol prefix,
|
||||||
|
# such as http:// or https://. Append :<port> for a port other than 80.
|
||||||
|
Hostname = cloud.example.com
|
||||||
|
|
||||||
|
# Path to the CalDAV calendar on the host specified above. This is the base
|
||||||
|
# path following your host name in the URL.
|
||||||
|
Path = /remote.php/dav/calendars/<your_username>/<your_calendar_name>/
|
||||||
|
|
||||||
|
# Type of authentication to use. Must be "basic" or "oauth2"
|
||||||
|
#AuthMethod = basic
|
||||||
|
|
||||||
|
# Enable this if you want to skip SSL certificate checks.
|
||||||
|
InsecureSSL = No
|
||||||
|
|
||||||
|
# Disable this if you want to use HTTP instead of HTTPS.
|
||||||
|
# Using plain HTTP is highly discouraged.
|
||||||
|
HTTPS = Yes
|
||||||
|
|
||||||
|
# This option allows you to filter the types of tasks synced. To this end, the
|
||||||
|
# value of this option should be a comma-separated list of item types, where
|
||||||
|
# each item type is either "event", "apt", "recur-event", "recur-apt", "todo",
|
||||||
|
# "recur" or "cal". Note that the comma-separated list must not contain any
|
||||||
|
# spaces. Refer to the documentation of the --filter-type command line argument
|
||||||
|
# of calcurse for more details. Set this option to "cal" if the configured
|
||||||
|
# CalDAV server doesn't support tasks, such as is the case with Google
|
||||||
|
# Calendar.
|
||||||
|
#SyncFilter = cal,todo
|
||||||
|
SyncFilter = cal
|
||||||
|
|
||||||
|
# Disable this option to actually enable synchronization. If it is enabled,
|
||||||
|
# nothing is actually written to the server or to the local data files. If you
|
||||||
|
# combine DryRun = Yes with Verbose = Yes, you get a log of what would have
|
||||||
|
# happened with this option disabled.
|
||||||
|
DryRun = No
|
||||||
|
|
||||||
|
# Enable this if you want detailed logs written to stdout.
|
||||||
|
Verbose = Yes
|
||||||
|
|
||||||
|
# Credentials for HTTP Basic Authentication (if required).
|
||||||
|
# Set `Password` to your password in plaintext (unsafe),
|
||||||
|
# or `PasswordCommand` to a shell command that retrieves it (recommended).
|
||||||
|
[Auth]
|
||||||
|
Username = alexander@bocken.org
|
||||||
|
# Password = <your_password>
|
||||||
|
# PasswordCommand = # Does not appear to work
|
||||||
|
|
||||||
|
# Optionally specify additional HTTP headers here.
|
||||||
|
#[CustomHeaders]
|
||||||
|
#User-Agent = Mac_OS_X/10.9.2 (13C64) CalendarAgent/176
|
||||||
|
|
||||||
|
# Use the following to synchronize with an OAuth2-based service
|
||||||
|
# such as Google Calendar.
|
||||||
|
#[OAuth2]
|
||||||
|
#ClientID = your_client_id
|
||||||
|
#ClientSecret = your_client_secret
|
||||||
|
|
||||||
|
# Scope of access for API calls. Synchronization requires read/write.
|
||||||
|
#Scope = https://example.com/resource/scope
|
||||||
|
|
||||||
|
# Change the redirect URI if you receive errors, but ensure that it is identical
|
||||||
|
# to the redirect URI you specified in the API settings.
|
||||||
|
#RedirectURI = http://127.0.0.1
|
||||||
|
```
|
||||||
|
|
||||||
|
The `Path` variable is simply the path you get when your click on the edit button for the calendar in the web interface and copy the "Internal link".
|
||||||
|
|
||||||
|
Adjusting the username and calendar name in the above template should also simply work:
|
||||||
|
You can find your username as described in the khard section.
|
||||||
|
The calendar name is the name you gave your calendar in the web interface all lower case.
|
||||||
|
|
||||||
|
For Authentication I could not get the `PasswordCommand` to work. Simply storing the password using the Password option is of course not recommended.
|
||||||
|
Luckily there is the `CALCURSE_CALDAV_PASSWORD` environment varibale which we can set programmatically instead.
|
||||||
|
|
||||||
|
To initialize the setup run now:
|
||||||
|
```sh
|
||||||
|
CALCURSE_CALDAV_PASSWORD=$(pass <nextcloud_password_path>) calcurse-caldav --init=two-way
|
||||||
|
```
|
||||||
|
|
||||||
|
And for future syncing a simple
|
||||||
|
```sh
|
||||||
|
CALCURSE_CALDAV_PASSWORD=$(pass <nextcloud_password_path>) calcurse-caldav
|
||||||
|
```
|
||||||
|
does the trick.
|
||||||
|
|
||||||
|
Like with `khard` you can now add this to your cronjob to sync your calendar regularly and will also require a sorucing of `~/.zprofile` to work with `pass`. Maybe a wrapper script is appropriate here.
|
||||||
|
See my [syncclouds.sh script as an example](https://bocken.org/git/Alexander/dotfiles/src/branch/master/.local/bin/syncclouds.sh) which also handles corrupted lockfiles because of unexpected aborts.
|
||||||
|
|
||||||
|
TODO: investigate wheter todos are possible to also be synced. Could not get it working myself.
|
||||||
|
|
||||||
|
### Sync to Android
|
||||||
|
|
||||||
|
If you wish to sync your calendar to your Android phone, you can use the [DAVx⁵](https://www.davx5.com/) app. Contacts are also possible
|
||||||
|
Loading…
Reference in New Issue
Block a user