Documentation officielle Absyss
Au cas où vous l’auriez loupé, Absyss a sorti sa documentation online : https://docs.absyss.com/
(voir plus) Documentation officielle AbsyssAu cas où vous l’auriez loupé, Absyss a sorti sa documentation online : https://docs.absyss.com/
(voir plus) Documentation officielle AbsyssVous essayez d’ouvrir un workbook Excel sans être connecté en session (que ça soit un script via VTOM ou TaskScheduler win) ?
Ca fonctionne en étant connecté et en lançant le script à la main, mais pas via VTOM avec le message étrange qu’il ne trouve pas le fichier (alors qu’il existe bien) :
Open c:\path\fichier.xlsx (clsMSExcel::Open)
Microsoft Excel: Microsoft Excel cannot access the file
Essayez :
It's likely a DCOM permissions issue. Automating Excel is sometimes fraught with peril...
The only way I've found around issues such as this is to set Excel to run as a specific user through DCOM permissions.
Open Component Services (Start -> Run, type in dcomcnfg)
Drill down to Component Services -> Computers -> My Computer and click on DCOM Config
Right-click on Microsoft Excel Application and choose Properties
In the Identity tab select This User and enter the ID and password of an interactive user account (domain or local) and click Ok
Keeping it as the interactive user or the launching doesn't work with the task scheduler unfortunately, even when setting the task up to run under an account that has admin access to the machine.
A savoir quand même : impossible d’ouvrir Excel mainteant en session mais vos scripts seront automatisables via TaskSCheduler ou via VTOM.
Contexte et souhait du client (désolé je ne les invente pas 🤐) :
Umbrel sur rpi4 utilise docker pour déployer ses applis. A priori, moi j’ai un problème avec le dhcpcd sur mon interface wlan0 qui perd régulièrement (toutes les 24h more or less) son adresse ip.
Pour résoudre le problème :
# ajouter à la fin du fichier /etc/dhcpcd.conf
denyinterfaces veth*
The veth (virtual ethernet) devices are used in software-defined networking to pass data across network namespaces (e.g. between a host and a container).
https://developers.redhat.com/blog/2018/10/22/introduction-to-linux-interfaces-for-virtual-networking#veth
The veth interfaces you see are half of the pairs created by Docker, the other halves live in each container Docker runs.
Docker should manage these interfaces completely, but under Raspios dhcpcd tries to configure every interface that appears in the host.
So the denyinterfaces option makes sure dhcpcd leaves these interfaces and Docker alone.
If you don’t add the line, dhcpcd will likely interfere with Docker, causing load on the system and possibly disrupting networking completely.
# pour vérifier si vous avez ce problème, regardez ces logs
journalctl -u dhcpcd
veth*: no IPv6 Routers available
route socket overflowed - learning interface state
source https://forums.raspberrypi.com/viewtopic.php?t=315363#p1886355
Petite astuce quand même si jamais vous voulez debug sans redémarrer le rpi et que vous n’arrivez plus à vous co en ssh :
sudo service dhcpcd restart
Pas sûr de comment ça fonctionne si c’est par adresse MAC ou ipv6 ou je ne sais quoi, mais ça fonctionne même quand j’ai perdu l’IPv4 local sur mon wlan0 (alors que je n’ai pas de câble ethernet de connecté et que je n’ai plus d’adresse ipv4 sur mon wlan0 ^^)
Si vous n’avez pas encore de nom domaine pour votre Umbrel Btcpay Server, je vous renvoie sur mon article BTCPayServer-Umbrel-email pour en créer un sur https://dynv6.com (c’est gratuit) et rajouter un sous domaine btcpay.
Create a New Record dans l'onglet Records
type: A, Name: btcpay.<votredomaine>.dynv6.net, Data: vide
Suivre l’excellent guide https://jorijn.com/installing-nginx-reverse-proxy-with-ssl-certificate-umbrel-btcpayserver/ avec quelques petits détails :
Rajouter les règles de NATage sur votre routeur (ex. livebox 192.168.1.1)
# comme ça c'est propre, votre adresse finale de don sera https://btcpay.<votredomaine>.dynv6.net sans mettre de port bizarre 15443
port interne: 15443,
port externe: 443,
TCP
ver votre rpi
port interne: 15080,
port externe: 80,
TCP
ver votre rpi
Rajouter une règle sur le firewall du routeur livebox + rpi :
# sur le rpi : sudo ufw allow <port>
# sur la livebox dans partie pare-feu
15080
15443
80
443
#/etc/nginx/sites-enabled/btcpay
# remplacer <votrenomdedomaine>
proxy_buffer_size 128k;
proxy_buffers 4 256k;
proxy_busy_buffers_size 256k;
client_header_buffer_size 500k;
large_client_header_buffers 4 500k;
http2_max_field_size 500k;
http2_max_header_size 500k;
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
server {
server_name btcpay.<votrenomdedomaine>.dynv6.net;
location / {
proxy_pass http://127.0.0.1:3003;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
}
# ces lignes sont automatiquement ajoutées lors de la commande
# sudo certbot --nginx -d btcpay.<votredomaine>.dynv6.net -m <votre@email> --agree-tos --https-port 15443 --http-01-port 15080
listen [::]:15443 ssl ipv6only=on; # managed by Certbot
listen 15443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/btcpay.<votredomaine>.dynv6.net/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/btcpay.<votredomaine>.dynv6.net/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}
# attention tous les blocs servers doivent avoir un listen sinon nginx prendra par défault le 80 qui est déjà pris par Umbrel et fera planter le service nginx
# nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
server {
if ($host = btcpay.virtual-thom.dynv6.net) {
return 301 https://$host$request_uri;
}
listen 15080 ;
listen [::]:15080 ;
server_name btcpay.<votredomaine>.dynv6.net;
return 404;
}
sudo certbot --nginx -d btcpay.<votredomaine>.dynv6.net -m <votre@email> --agree-tos --https-port 15443 --http-01-port 15080
Enable le plugin Pay Button
dans votre BTCPAY server, et coller le bout de code qu’il vous propose n’importe où sur vos sites.
Pour ceux qui voudraient changer une image de fond d’écran de leur page d’accueil Umbrel :
Copier en scp (avec WinSCP par ex) votreimage.jpg de votre PC vers votre umbrel dans votre home dir ~ (ceci est un exemple pour les noms et chemins)
Se connecter en ssh sur votre noeud umbrel
docker cp ~/votreimage.jpg $(docker ps | grep dashboard | awk '{print $1}'):/dist/wallpapers/1.jpg
ou copier/coller l’ID du container docker du dashboard à la place de $(docker ps | grep dashboard | awk '{print $1}')
ou tout autre image wallpapers entre 1 et 16 (le code est comme ça, on peut pas mettre d’autres noms ou ajouter)
data() {
return {
wallpapers: ['1.jpg', '2.jpg', '3.jpg', '4.jpg', '5.jpg', '6.jpg', '7.jpg', '8.jpg', '9.jpg', '10.jpg', '11.jpg', '12.jpg', '13.jpg', '14.jpg', '15.jpg', '16.jpg']
};
},
Ca n’est pas permanent et “sautera” à la prochaine MAJ de l’image du dashboard ou reconstruction du container mais c’est easy à remettre.
J’ai écrit un plugin wordpress pour callback un webhook BTCPay Server.
Suite à une invoice “Settled”, en définissant un montant minimum, ça ajoute automatiquement les donateurs, ou on peut les gérer à la main aussi. Si on fournit un nom de donateur avec @ pour twitter, et qu’on a renseigné une api twitter dans les Settings du plugin, ça va chercher automatiquement l’image du profile.
C’est ici :
docker network ls
NETWORK ID NAME DRIVER SCOPE
f4e06556dcab bridge bridge local
363be02c0e7f host host local
279d424f0982 none null local
d2f1103e7741 umbrel_main_network bridge local
docker network inspect d2f1103e7741 | head -n20
# récupérer le subnet "IPAM"."Config"."Subnet": exemple. "10.19.0.0/16"
# récupérer la gateway "IPAM"."Config"."Gateway": exemple. "10.19.0.1"
umbrel@umbrel:~ $ crontab -l
*/1 * * * * ~/dyn.sh <votredomaine>.dynv6.net password_ou_httptoken_c_idem > /dev/null 2>&1
*/1 * * * * ~/dyn4.sh <votredomaine>.dynv6.net password_ou_httptoken_c_idem > /dev/null 2>&1
umbrel@umbrel:~ $ cat dyn4.sh
#!/bin/sh -e
# based on https://gist.github.com/corny/7a07f5ac901844bd20c9
hostname=$1
token=$2
v4_address=`curl 'https://api.ipify.org'`
if [ -z "$hostname" -o -z "$token" ]; then
echo "Usage: $0 your-name.dynv6.net <your-authentication-token>"
exit 1
fi
if [ -e /usr/bin/curl ]; then
bin="curl -fsS"
elif [ -e /usr/bin/wget ]; then
bin="wget -O-"
else
echo "neither curl nor wget found"
exit 1
fi
$bin "http://ipv4.dynv6.com/api/update?hostname=$hostname&ipv4=$v4_address&token=$token"
umbrel@umbrel:~ $ cat dyn.sh
#!/bin/sh -e
hostname=$1
token=$2
device=$3
file=$HOME/.dynv6.addr6
[ -e $file ] && old=`cat $file`
if [ -z "$hostname" -o -z "$token" ]; then
echo "Usage: your-name.dynv6.net <your-authentication-token> [device]"
exit 1
fi
if [ -z "$netmask" ]; then
netmask=128
fi
if [ -n "$device" ]; then
device="dev $device"
fi
address=$(ip -6 addr list scope global $device | grep -v " fd" | sed -n 's/.*inet6 \([0-9a-f:]\+\).*/\1/p' | head -n 1)
if [ -e /usr/bin/curl ]; then
bin="curl -fsS"
elif [ -e /usr/bin/wget ]; then
bin="wget -O-"
else
echo "neither curl nor wget found"
exit 1
fi
if [ -z "$address" ]; then
echo "no IPv6 address found"
exit 1
fi
# address with netmask
current=$address/$netmask
if [ "$old" = "$current" ]; then
echo "IPv6 address unchanged"
exit
fi
# send addresses to dynv6
$bin "http://dynv6.com/api/update?hostname=$hostname&ipv6=$current&token=$token"
# save current address
echo $current > $file
# rajouter ou modifier
# ex ISP orange : relayhost = smtp.orange.fr
sudo vi /etc/postfix/main.cf
myhostname = votredomaine.dynv6.net
mydestination = $myhostname, votredomaine.dynv6.net, umbrel, localhost.localdomain, localhost
relayhost = smtp.votreisp.fr
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128, 10.19.0.0/16
inet_interfaces = all
inet_protocols = ipv4
smtpd_helo_restrictions =
permit_mynetworks =
permit_sasl_authenticated =
reject_invalid_helo_hostname =
reject_non_fqdn_helo_hostname =
reject_unknown_helo_hostname =
check_helo_access =
hash:/etc/postfix/helo_access =
umbrel@umbrel:~ $ sudo vi /etc/postfix/helo_access
<votreipv4delabox> REJECT
votredomaine.dynv6.net REJECT
mail.votredomaine.dynv6.net REJECT
# MAJ ipv4 si votre IP box ISP n'est pas fixe
sudo crontab -e
0 * * * * sed -i '1 s#.*#'`curl 'https://api.ipify.org'`' REJECT#' /etc/postfix/helo_access
sudo service postfix restart
sudo ufw allow from 10.19.0.0/16 to any port 25
Configurer la gateway docker récupérée précédemment.
Si comme moi, vous avez mis à jour la version Ubuntu 22.04.1 LTS Jammy, et que votre clé ssh ne fonctionne plus (“Server refused our key”), c’est que la clé SSH RSA n’est plus assez “sécurisée” d’après leur nouvelle norme.
Il faut créer une nouvelle paire de clé SSH ed25519. Reste à coller le nouveau .pub dans votre authorized_keys
, encore faut-il avoir accès à la console de l’instance.
Voici comment faire pour débugger et ouvrir une session temporaire via l’interface admin d’Oracle Cloud.
Lancer une invite de commande (pour linux/mac pas de problème, sur windows, powershell 7.x semble mieux fonctionner)
ssh-keygen
# laisser tout par défaut sans passphrase
# repérer le chemin du fichier id_rsa.pub
# sur windows normalement : %userprofile%\.ssh\id_rsa.pub
Copier le contenu de id_rsa.pub
et le coller dans :
Compute > Instances > Instance details (de votre instance à accéder) > Console connection (dans Resources en bas à gauche) > Create local connection > Paste public key
Une nouvelle ligne est créée, menu (…) > “Copy serial console connection for Linux/Mac”
# ça devrait ressembler à ça :
ssh -o ProxyCommand='ssh -W %h:%p -p 443 ocid1.instanceconsoleconnection.oc1.eu-marseille-1.xxxxxxxxxxxxxxxxxq@instance-console.eu-marseille-1.oci.oraclecloud.com' ocid1.instance.oc1.eu-marseille-1.xxxxxxxxxxxxxxxxxxxxx
Coller dans l’invite de commande et normalement c’est OK (répondre yes)
Une fois sur la console de votre instance, coller la nouvelle clé ed25519 pub dans votre ~/.ssh/authorized_keys
Vous connaissez tous CTRL + Survol App ou Job pour avoir un aperçu des caractéristiques.
Un collègue m’a fait découvrir “The Eye of the tiger”, le bouton “Aperçu” dans la barre des tâches de l’IHM. So nice.
Notre version : v6.5.1l