From my notes, and a bit as a funny as our cat is named Pip.
apt-get update && apt-get -y upgrade && apt-get install python-pip && pip install --upgrade pip
Failed and working projects, notes etc.
From my notes, and a bit as a funny as our cat is named Pip.
apt-get update && apt-get -y upgrade && apt-get install python-pip && pip install --upgrade pip
sudo systemctl set-default multi-user.target
sudo systemctl set-default graphical.target
sudo systemctl isolate multi-user.target
sudo systemctl isolate graphical.target
Starting a virtual terminal: Press Ctrl+Alt+F2
To return: Press Ctrl+Alt+F1 or Ctrl+Alt+F7
Update for bot blocker as mentioned here: https://3xn.nl/projects/2023/09/20/crude-solution-to-ban-bots-by-their-user-agent/
My website is still being kicked around sometimes, but I’m winning D:
'ubermetrics-technologies', 'seokicks', 'ClaudeBot', 'serpstatbot', 'Barkrowler', 'YisouSpider', 'babbar.tech', 'AwarioBot', 'bytespider', 'amazonbot', 'MJ12bot', 'YandexBot', 'SemrushBot', 'dotbot', 'AspiegelBot', 'DataForSeoBot', 'DotBot', 'Pinterestbot', 'PetalBot', 'HeadlessChrome', 'GPTBot', 'Sogou', 'ALittle Client', 'fidget-spinner-bot', 'intelx.io_bot', 'Mediatoolkitbot', 'BLEXBot', 'AhrefsBot'
White : OUT
Red: VCC
Blue/Black: Wire mantle. Not sure if this was required, but I copied the initial setup, just to be sure. It looks a bit sloppy, but it works in the new situation and that’s all that mattered in this case.
Old situation:
New situation:
For the old version, click here.
So a new release came out and it is important to get this update as soon as possible! This manual is a transcript of the way that I have updated my Mastodon instance. Please make sure you make proper backups and use your brain while updating things
Linux flavour: Debian
Update from: 4.2.X
su - mastodon
cd /home/mastodon/live
git fetch --tags
git checkout [type the most recent version here, starting with the letter v. For example; v4.2.5 git checkout v4.2.5
If you get a ruby version error, please see bottom of this article for a fix! bundle install
yarn install
RAILS_ENV=production bundle exec rails db:migrate
RAILS_ENV=production bundle exec rails assets:precompile
exit
Okay, you can not choose to either reboot or restart the services.
REBOOT:
This command may vary, depending on your Linux flavour. systemctl reboot
RESTART:
This command may vary, depending on your Linux flavour. systemctl restart mastodon-sidekiq systemctl reload mastodon-web Optional: systemctl restart mastodon-streaming
My system was unable to find the required v3.2.3 of Ruby and I have fixed this by doing the following steps:
Please make sure that your path is correct. git -C ~/.rbenv/plugins/ruby-build pull
rbenv install 3.2.3 *WAIT TILL DONE* (it may take a little while)
To check all the installed versions type: rbenv versions
To set v3.2.3 as the global version, type: rbenv global 3.2.3
To double-check the active, installed version, type: rbenv versions
This manual is a transcript of the way that I have updated my Mastodon instance. Please make sure you make proper backups and use your brain while updating things.
Sources: https://richstone.io/where-is-ruby-3-0-0-on-rbenv/
It can happen that your TeamViewer instance is not starting any more after switching over to the new interface or that you really do not like the new looks of the new interface.
Computer\HKEY_CURRENT_USER\Software\TeamViewer
Done.
From Heston Blumenthal’s In Search of Perfection, Season 1, Episode 4 named “Fish and Chips”.
Enjoy!
Original post: https://3xn.nl/projects/2023/09/20/crude-solution-to-ban-bots-by-their-user-agent/
I’ve very much simplified the script that instantly redirects unwanted traffic away from the server. Currently, I am using a very cheap VPS to receive all that traffic.
Here ya go:
<?php // CC-BY-NC (2023) // Author: FoxSan - fox@cytag.nl // This is a functional but dirty hack to block bots, spiders and indexers by looking at the HTTP USER AGENT. // Traffic that meets the conditions is being yeeted away to any place of your choice. ////////////////////////////////////////////////////////////// // Emergency bypass // goto end; ////////////////////////////////////////////////////////////// // attempt to basically just yeet all bots to another website $targetURL = "https://DOMAIN.TLD/SUB/"; // Function to check if the user agent appears to be a bot or spider function isBot() { $user_agent = $_SERVER['HTTP_USER_AGENT']; $bot_keywords = ['bytespider', 'amazonbot', 'MJ12bot', 'YandexBot', 'SemrushBot', 'dotbot', 'AspiegelBot', 'DataForSeoBot', 'DotBot', 'Pinterestbot', 'PetalBot', 'HeadlessChrome', 'GPTBot', 'Sogou', 'ALittle Client', 'fidget-spinner-bot', 'intelx.io_bot', 'Mediatoolkitbot', 'BLEXBot', 'AhrefsBot']; foreach ($bot_keywords as $keyword) { if (stripos($user_agent, $keyword) !== false) { return true; } } return false; } // Check if the visitor is a bot or spider if (isBot()) { // yeet header("Location: $targetURL"); // Exit to prevent further processing exit; } end: // If the visitor is not a bot, spider, or crawler, continue with your website code. ////////////////////////////////////////////////////////////////////// ?>
Here’s a list of stuff that I have in my .htaccess files on various websites.
I want to work on my website, but any other visitor should be booted to another website so I can work in peace. Sidenote: It's forever since I last used this, so it might work. Or not. --- # YOUR IP address goes here: RewriteCond %{REMOTE_ADDR} !^000\.000\.000\.000$ # And provides you access to: RewriteCond %{REQUEST_URI} !^https://DOMAIN.TLD$ [NC] # Fine, go have all the media as well RewriteCond %{REQUEST_URI} !\.(jpg|jpeg|png|gif|svg|swf|css|ico|js)$ [NC] # Any other visitor can go visit the following website: RewriteRule .* https://DOMAIN.TLD/ [R=302,L]
# Hey, no viewing access to this file <FilesMatch "^.ht"> Order deny,allow Deny from all </FilesMatch>
# Disable Server Signature ServerSignature Off
# SSL all the things! RewriteCond %{HTTPS} !=on RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]
# No WWW RewriteCond %{HTTP_HOST} ^www\.DOMAIN\.TLD$ RewriteRule ^/?$ "https\:\/\/DOMAIN\.TLD\/" [R=301,L]
# Do we like Symlinks? Yeah we do. Options +FollowSymlinks
# No open directories or directory listings. What is this... 1998? Options All -Indexes IndexIgnore *
# Rewrite rules to block out some common exploits. RewriteCond %{QUERY_STRING} base64_encode[^(]*\([^)]*\) [OR] RewriteCond %{QUERY_STRING} (<|%3C)([^s]*s)+cript.*(>|%3E) [NC,OR] RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR] RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2}) RewriteRule .* index.php [F]
# PHP doohickies php_flag register_globals off php_flag safe_mode off php_flag allow_url_fopen off php_flag display_errors off php_value session.save_path '/tmp' php_value disable_functions "exec,passthru,shell_exec,system,curl_multi_exec,show_source,eval"
# File Injection Protection, or a code-condom. What. RewriteCond %{REQUEST_METHOD} GET RewriteCond %{QUERY_STRING} [a-zA-Z0-9_]=http:// [OR] RewriteCond %{QUERY_STRING} [a-zA-Z0-9_]=(\.\.//?)+ [OR] RewriteCond %{QUERY_STRING} [a-zA-Z0-9_]=/([a-z0-9_.]//?)+ [NC] RewriteRule .* - [F]
# /proc/self/environ? Go away! RewriteCond %{QUERY_STRING} proc/self/environ [NC,OR]
# Disallow Access To Sensitive Files. Enter your own file names. RewriteRule ^(htaccess.txt|configuration.php(-dist)?|joomla.xml|README.txt|web.config.txt|CONTRIBUTING.md|phpunit.xml.dist|plugin_googlemap2_proxy.php)$ - [F]
# Don't allow any pages to be framed - Defends against CSRF <IfModule mod_headers.c> Header set X-Frame-Options SAMEORIGIN </IfModule>
# Disallow Php Easter Eggs RewriteCond %{QUERY_STRING} \=PHP[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12} [NC] RewriteRule .* index.php [F]
# Libwww-perl Access Block RewriteCond %{HTTP_USER_AGENT} libwww-perl.* RewriteRule .* ? [F,L]
# Uh. I forgot. <IfModule mod_autoindex.c> IndexIgnore * </IfModule>
# NO SNIFFYWIFFY OwO <IfModule mod_headers.c> Header always set X-Content-Type-Options "nosniff" </IfModule>
# NEEDS TESTING # Turn on IE8-IE9 XSS prevention tools #Header set X-XSS-Protection "1; mode=block"
# NEEDS TESTING TOO # Only allow JavaScript from the same domain to be run. # Don't allow inline JavaScript to run. #Header set X-Content-Security-Policy "allow 'self';"
# Example if you don't like Russia and Turkey (Optional A1 is to block anonymous proxies) RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^(RU|TR)$ RewriteRule .* https://DOMAIN.TLD/directorywithindexdothtml/ [R=302,L]
# Caching stuff <FilesMatch "\.(ico|jpg|jpeg|png|gif|js|css|swf)$"> Header set Cache-Control "public, max-age=3600" </FilesMatch>
# Compress text, html, javascript, css, xml! <IfModule mod_deflate.c> AddOutputFilterByType DEFLATE text/html text/xml text/css text/plain AddOutputFilterByType DEFLATE image/svg+xml application/xhtml+xml application/xml AddOutputFilterByType DEFLATE application/rdf+xml application/rss+xml application/atom+xml AddOutputFilterByType DEFLATE text/javascript application/javascript application/x-javascript application/json AddOutputFilterByType DEFLATE application/x-font-ttf application/x-font-otf AddOutputFilterByType DEFLATE font/truetype font/opentype </IfModule>
# Joomla! core SEF Section. RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] RewriteCond %{REQUEST_URI} !^/index\.php RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule .* index.php [L]
# PHP TWEAKS php_value upload_max_filesize 200M php_value post_max_size 200M php_value max_input_vars 2000 php_value max_execution_time 120 php_value memory_limit 1024M
## BEGIN EXPIRES CACHING <IfModule mod_expires.c> ExpiresActive on ExpiresDefault "access plus 1 month" ExpiresByType text/cache-manifest "access plus 0 seconds" ExpiresByType text/html "access plus 0 seconds" ExpiresByType text/xml "access plus 0 seconds" ExpiresByType application/xml "access plus 0 seconds" ExpiresByType application/json "access plus 0 seconds" ExpiresByType application/rss+xml "access plus 1 hour" ExpiresByType application/atom+xml "access plus 1 hour" ExpiresByType image/x-icon "access plus 1 week" ExpiresByType image/gif "access plus 1 month" ExpiresByType image/png "access plus 1 month" ExpiresByType image/jpg "access plus 1 month" ExpiresByType image/jpeg "access plus 1 month" ExpiresByType video/ogg "access plus 1 month" ExpiresByType audio/ogg "access plus 1 month" ExpiresByType video/mp4 "access plus 1 month" ExpiresByType video/webm "access plus 1 month" ExpiresByType text/x-component "access plus 1 month" ExpiresByType application/x-font-ttf "access plus 1 month" ExpiresByType font/opentype "access plus 1 month" ExpiresByType application/x-font-woff "access plus 1 month" ExpiresByType image/svg+xml "access plus 1 month" ExpiresByType application/vnd.ms-fontobject "access plus 1 month" ExpiresByType text/css "access plus 1 year" ExpiresByType text/javascript "access plus 1 year" ExpiresByType application/javascript "access plus 1 year" <IfModule mod_headers.c> Header append Cache-Control "public" </IfModule> </IfModule> ## END EXPIRES CACHING
There is a very small difference between the two Git branches, so pay attention.
su - mastodon
Edit if your Mastodon instance is v4.1.x
nano live/app/javascript/mastodon/features/compose/components/compose_form.js
Edit if your Mastodon instance is v4.2.x
nano live/app/javascript/mastodon/features/compose/components/compose_form.jsx
In this file, you will find the number “500” twice. Replace that number with your desired character limit and save the file.
nano live/app/validators/status_length_validator.rb
In this file, you will find the number “500” once. Replace that number with your desired character limit and save the file.
nano live/app/serializers/rest/instance_serializer.rb
FIND the line that reads:
:languages, :registrations,
ADD the following to that line:
:max_toot_chars
Pay attention if a comma is used at the end or not.
Scroll down to the end of the file until you reach the “private” section.
ADD
def max_toot_chars [the number of your desired character limit without the brackets] end
EXAMPLE
def max_toot_chars 5000 end
Go back to the live directory and enter the following commands, one by one:
RAILS_ENV=production bundle exec rails assets:precompile exit systemctl restart mastodon-sidekiq systemctl reload mastodon-web [OPTIONAL] systemctl restart mastodon-streaming
Done.