I need a backup solution, and I wanted to explore how Duplicati worked. I’ve been using Attic, but the code seems to be old and not getting updated. Before I go installing it on my actual server, I wanted to run through it once in a virtual environment.
Spoiler alert: Duplicati didn’t do what I wanted. I’m glad I ran through it in a test environment before committing to it. It seems like it is designed for personal or single computer setups. It doesn’t have a good way to copy files over the network to the server. It might be able to copy them to a remote drive, but not pull them from a remote computer/laptop.
I’ve been enjoying Flutter a lot. I’ve written a couple of apps, and I’m getting a good handle on the dart language. Now, I’d like to use dart for the whole system rather than having half of my code in PHP and the other half in Dart/Flutter.
The best use case is that I can have a shared package between the Flutter front-end and the Dart shelf back-end. So, I can create, for example, a Transaction class that represents a transaction in my system. I can give the class toJson() and fromJson() methods that will convert between a Json-formatted string. Then, I can easily send it from the Flutter front-end to the back-end and have the same code running on both sides. I only maintain it in one place.
So, I learned how to make all that work pretty quickly. The challenge is how do I push that out onto a server already setup as a website. The server is using Nginx, and I don’t want to replace all the other stuff that Nginx is already doing.
I took a little less time this install, but it still takes me some time going through these notes and getting it right. This is what I’ve done to get my computer setup this time on Impish Indri Ubuntu 21.10.
I’m a little late to the party here. I’ve been fighting with this install for 6 months! It got to the point that my laptop wouldn’t suspend and would crash when I would reboot. The next version of Ubuntu was released before I could get this proof read and published!
I’ve been keeping a list of the files that I restore so I don’t forget anything. I like formatting the drive and starting from scratch, but I have to be careful what I copy back, otherwise it defeats the purpose. Maybe this list will help you think through what you need to backup and restore on your system:
~/.ssh: connection keys for SSH connections
~/app: (as in application development) this is where I keep my play space for programming projects
~/Documents: where most of my regular files, like documents, of course
~/DigitalEagleServices: work-related files
~/Insync: OneDrive files (saves times resyncing from the Internet)
~/.config/google-chrome: my Google Chrome browser profile, restores bookmarks, last used tabs, browser history, etc.
~/.remmina: the configuration for Remmina, the remote desktop software
~/.sword: the data files for the sword project, which I use with Xiphos
~/.vim: my custom configurations for the Vi editor
~/.vimrc: the actual configuration file for the Vi editor
~/.local/share/fonts: extra fonts that I have collected over the years
/etc/NetworkManager/system-connections: this saves all of my wireless connections and VPN connections (I’m not sure this worked this time)
.local/share/applications: I review this directory for shortcuts to apps that I use
~/bin: certain programs and scripts that I installed manually
~/Zotero: research data, depending on how you installed it may be in ~/snap/zotero-snap/common/Zotero
~/.config/obs-studio: my setup (scenes, etc) for OBS Studio
Permissions are important for the SSH files. Here’s how I fixed them:
The network manager connection files also have to have certain permissions. So, it is easier to restore them to my Downloads directory and then use these commands:
chmod 600 *
sudo chown root:root *
sudo cp * /etc/NetworkManager/system-connections/
sudo service NetworkManager restart
Flameshot is my current screenshot tool. I need it installed sooner than later to help document. First off, it’s easy to install with:
sudo apt install flameshot
To make it better, I like it mapped to the print screen button. That way I get the control of Flameshot for every screenshot. Here’s the commands I can run on the command-line to make that happen:
gsettings set org.gnome.settings-daemon.plugins.media-keys screenshot ''
gsettings set org.gnome.settings-daemon.plugins.media-keys custom-keybindings "['/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/']"
gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/ name 'flameshot'
gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/ command '/usr/bin/flameshot gui'
gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/ binding 'Print'
Finally, I went to Configuration > General and checked “Launch at startup”.
Note: My old favorite was Shutter. I haven’t installed it and gone back to it yet.
My favorite browser so far has been Google Chrome. I could make arguments for other browsers, but Chrome has been my favorite for a while. I downloaded the browser package from Google’s Website and installed it by double clicking on it in the Downloads folder (opened in the Software Center).
Don’t forget, I also restored my profile in ~/.config/google-chrome to keep all of my bookmarks and such. After that, I just had to sign in to my Google account at the upper right corner of the browser because it said the sync was paused. I had to sign in to all of the websites because it lost the session, but that was no big deal. I was back in business where I left off.
I also went to System Settings > Default Applications and set the default for Web to Chrome.
On past installations, I have used KeePass2. Since getting into Flutter, I found AuthPass, which is a KeePass implementation in Flutter. So, I’m jumping ship and going for it. Their blog post documents an Apt repo, but that didn’t work. Here’s what I tried:
E: The repository 'http://ppa.launchpad.net/codeux.design/authpass/ubuntu hirsute Release' does not have a Release file.
N: Updating from such a repository can't be done securely, and is therefore disabled by default.
After installing, it popped open a prompt to start Dropbox. That places the indicator icon by the clock. It also downloaded the “proprietary” binary required to make it work. It also opened a browser window to do the log in. I had trouble making that work until I signed into the website first and then connected the desktop client.
OneDrive itself doesn’t have a sync client. So, I have been using InSync. I just downloaded that from their website. Then, I installed with:
I have an Nvida card, so I wanted to install the driver. Last Ubuntu version automatically installed the drvier. This time, I had to do it myself. I opened the Additional Drivers app an selected the 465 driver:
After trying the 465 and 470 drivers for a while, I found it was locking up a lot. Chrome and Teams would crash everytime I would open the laptop lid up. I guess restoring after a suspend caused memory issues. Worse, it would lock up everytime I would disconnect from my D6000 dock. So, I tried the 450 driver I had on the previous version of Ubuntu.
I haven’t done some good testing to confirm, but I think Power Top has doubled my battery life. I installed with:
Just because it’s fun to see as the years go by, here’s the stats:
--- TLP 1.3.1 --------------------------------------------
+++ System Info
System = Dell Inc. XPS 15 7590
BIOS = 1.10.0
Release = Ubuntu 21.04
Kernel = 5.11.0-22-generic #23-Ubuntu SMP Thu Jun 17 00:34:23 UTC 2021 x86_64
/proc/cmdline = BOOT_IMAGE=/vmlinuz-5.11.0-22-generic root=/dev/mapper/vgubuntu-root ro quiet splash vt.handoff=7
Init system = systemd v247 (247.3-3ubuntu3.1)
Boot mode = UEFI
+++ TLP Status
State = enabled
RDW state = enabled
Last run = 11:30:47 PM, 10 sec(s) ago
Mode = AC
Power source = AC
To be prepared for any VPN requirement, I install all the VPNs:
LIbreOffice comes pre-installed. But, to keep it up to date, I added the official repository:
sudo add-apt-repository ppa:libreoffice/ppa
For Bible study software, I use Xiphos. Remember up in the backup section, I restored the .sword directory for the Bible text and commentaries.
sudo apt install xiphos
I’ve been using Zotero off and on for a while now. It’s hard to figure out the best way to install in a way that keeps it automatically updated. I finally found a place that claims to update the repository within 24 hours of updates. So, I’ll use that.
Restoring the data directory was a big challenging because I had use the snap before. I had to move the data from ~/snap/zotero-snap/common/Zotero to ~/Zotero
I’ve been using Joplin as my notes application. I installed it from the software center, but I noticed it was a snap app:
snap install joplin-desktop
After installing, I went to Tools > Options > Synchronization, and I changed the target to OneDrive. After that, I exited back out to the main app and clicked the Synchronize button. That took me through the login process.
The cups-browsed service is very annoying because it adds printers that don’t get removed. So, a laptop that travels around a bit just collects printers that never get removed.
To install my Dell E525W printer, I downloaded the driver from the Dell website. I unzipped and installed the deb package:
sudo apt install ./dell-color-mfp-e525w_1.0-28_all.deb
I have found the settings app unreliable for working with printers. So, I used the cups web interface at http://localhost:631. I added an IPP printer with the URL ipp://DELLA40A1E/ipp/ and the PPD file located at: /usr/share/cups/model/Dell/Dell_Color_MFP_E525w.ppd.gz
Application Package Systems
Ubuntu comes with the ability to use DEB packages and snap packages. I used this to add AppImages:
chmod a+x appimaged-x86_64.AppImage
I retired these two extensions. I list them because maybe I’ll go back:
Caffeine: the tool I used to use stop the computer from going to sleep
Do Not Disturb Button: I used to use this for hiding notifications during meetings. It’s no longer maintained.
I’ve had issues with old versions of Gimp and collaborating with others . According to Gimp’s website, 2.10.24 is the latest version. Gimp came installed as a snap and it is actually the latest version. So, I left it alone.
sudo apt install inkscape \
Inkscape: My go to program for drawing (vector-based drawing)
Note: If you forget that second (reconfigure) command, you’ll get errors like this every apt install:
libdvd-pkg: apt-get check failed, you may have broken packages. Aborting…
N: Download is performed unsandboxed as root as file '/home/skp/Downloads/insync_18.104.22.168983-focal_amd64.deb' couldn't be accessed by user '_apt'. - pkgAcquire::Run (13: Permission denied)
For OBS, I repeated what I did on the last version of Ubuntu:
I started a quick app to try to organize a group of photos, which I intend to turn into a video. The problem is that I have a bunch of videos in the batch as well that I need to review. I thought I could get the video to work inside my app, but long story short, I wasn’t able to figure it out. I don’t think video is supported on the Linux platform. Maybe if I was working on Android, it would be a different story.
Anyway, maybe some of my notes will be helpful if you are trying things similar.
I happened upon an article listing open source projects that mentioned Supabase. They described it as an alternative to Firebase, and that caught my attention. Not too long after, I had a bunch of pictures to organize, so I thought I’d give it a try for that project.
I’ve been wanting to level up my meeting look and sound for a while. I’ve been hearing about how you can output OBS Studio as a virtual camera so that you can use it as your webcam in Microsoft Teams. So, here are my notes on how I set it all up.
Installing Virtual Camera
First, I Installed the loopback camera module from the Ubuntu repository:
sudo apt install v4l2loopback-dkms
Originally, I had some issues with the plugin installation, so I might have taken a few extra steps here. But, it works, so I don’t have any complaints.
To make it automatically load on boot, I added this line to the end of /etc/modules:
sudo bash -c 'echo v4l2loopback >> /etc/modules'
Then, I added this line to the modprobe conf file:
Finally, to use it the first time (without having to reboot), I ran the modprobe command. I’m not sure if this was necessary.
sudo modprobe v4l2loopback
Now, the OBS plugin makes starting and stopping the stream easier. I downloaded the plugin deb package from the github release page. Then, I installed the deb from the commandline:
sudo apt install ~/Downloads/obs-v4l2sink.deb
For some reason, the Deb package apparently places the files in the wrong place. I copied the files into my user plugins directory (which I had to create first).
cp -r /usr/share/obs/obs-plugins/v4l2sink/ .
mkdir -p $HOME/.config/obs-studio/plugins/v4l2sink/bin/64bit cp /usr/lib/obs-plugins/v4l2sink.so $HOME/.config/obs-studio/plugins/v4l2sink/bin/64bit
After that, the plugin shows up in the tools menu.
On my new setup, I have my laptop off to the side. That means that the webcam built into the laptop isn’t in the best position. Instead, I’d like to use the camera on my phone as the camera for the meeting. The best way I found is with the DroidCam app/plugin.
First, I installed the app on my phone. it’s DroidCam on the play store.
I downloaded the plugin from Dev47Apps. I extracted the zip file to $HOME/.config/obs-studio/plugins
After installing, you can add a “DroidCam OBS” source to your scene.
To make it work, I opened two different instances of OBS. The bottom is for the webcam, and the top is for desktop sharing.
On the bottom one, I opened a Windowed projector. I right clicked on the preview, and selected “Windowed Projector”.
Then, in the top window, I was able to add a “Window Capture” source.
Then, I started the virtual camera on the bottom window so that Teams could use that one. You can find it in the menu at Tools > v4l2loopback.
You just have to hit Start and then you can close this window.
Finally, in the Teams device settings, I selected “vcam” as my Camera device. That pulls in the output from OBS:
Lastly, Teams has not given me the option to share a single window. It only allows me to select one of my desktops. So, I can use the top OBS window to control what shows. I just output that OBS on my 3rd screen that I can share on the Teams call. I can do that by right clicking on the preview window and selecting Fullscreen Projector (Preview) > Display 3.