Update Timezone Data
Check Current TZ Data¶
Update TZ¶
List TZ¶
Search For TZ in Specific Area¶
Search For Specific TZ¶
TZ Data is Stored Here (Debian)¶
Script to Update Containers¶
I stored this script in the Proxmox Shell's root directory so I can periodically run it when I forget to set the TZ. I know there is a way to set LXC templates up with this info, but sometimes it's easier to just re-run this to ensure all is well.
#!/bin/bash
# Get list of container IDs
container_ids=$(pct list | awk 'NR>1 {print $1}')
echo "Updating timezone to America/Phoenix for the following containers: $container_ids"
for ctid in $container_ids; do
echo "Processing container ID: $ctid"
# Attempt Debian/Ubuntu method
if pct exec $ctid -- which dpkg-reconfigure > /dev/null 2>&1; then
echo " Detected Debian/Ubuntu-based container. Updating timezone..."
pct exec $ctid -- apt-get update && apt-get install -y tzdata locales -qq
pct exec $ctid -- echo "en_US.UTF-8 UTF-8" > /etc/locale.gen
pct exec $ctid -- dpkg-reconfigure --frontend=noninteractive locales -f
# Directly set environment variables for the tzdata reconfiguration
pct exec $ctid -- env LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 dpkg-reconfigure --frontend=noninteractive tzdata
pct exec $ctid -- ln -sf /usr/share/zoneinfo/America/Phoenix /etc/localtime
pct exec $ctid -- echo "America/Phoenix" > /etc/timezone
pct exec $ctid -- date
elif pct exec $ctid -- which timedatectl > /dev/null 2>&1; then
echo " Detected systemd-based container. Updating timezone..."
pct exec $ctid -- timedatectl set-timezone America/Phoenix
pct exec $ctid -- date
elif pct exec $ctid -- which apk > /dev/null 2>&1; then
echo " Detected Alpine Linux-based container. Updating timezone..."
pct exec $ctid -- apk update && apk add --no-cache tzdata -qq
pct exec $ctid -- ln -sf /usr/share/zoneinfo/America/Phoenix /etc/localtime
pct exec $ctid -- echo "America/Phoenix" > /etc/timezone
pct exec $ctid -- date
else
echo " Could not determine the OS type for container $ctid. Please update manually."
echo " Try running: pct exec $ctid -- dpkg-reconfigure tzdata"
echo " or: pct exec $ctid -- timedatectl set-timezone America/Phoenix"
echo " or: pct exec $ctid -- ln -sf /usr/share/zoneinfo/America/Phoenix /etc/localtime"
echo " and: pct exec $ctid -- echo 'America/Phoenix' > /etc/timezone"
fi
echo "-------------------------"
done
echo "Timezone update process completed."