# ubuntu architecture

dpkg --print-architecture

# ubuntu GUI

# https://freetome.tistory.com/517
# https://guiyomi.tistory.com/113
# https://hermeslog.tistory.com/498
# https://mungiyo.tistory.com/22
# https://learn.microsoft.com/ko-kr/azure/virtual-machines/linux/use-remote-desktop?tabs=azure-cli

# gui
sudo apt update && sudo apt -y upgrade
sudo apt install -y ubuntu-desktop

# xfce4 xrdp
sudo DEBIAN_FRONTEND=noninteractive apt -y install xfce4 # gdm3, lightdm (lightdm 선택)
sudp apt install -y xfce4-session xfce-goodies
#area: 6, 69, display mamger: lightdm

sudo apt -y install xrdp
systecmctl enable xrdp

sudo cp /etc/xrdp/xrdp.ini /etc/xrdp/xrdp.ini.bak
sudo sed -i 's/3389/13389/g' /etc/xrdp/xrdp.ini
sudo sed -i 's/max_bpp=32/#max_bpp=32nmax_bpp=128/g' /etc/xrdp/xrdp.ini
sudo sed -i 's/xserverbpp=24/#xserverbpp=24nxserverbpp=128/g' /etc/xrdp/xrdp.ini

# xrdp λ³€κ²½ 확인
vi /etc/xrdp/xrdp.ini

# xrdp ν™œμ„±ν™”
sudo /etc/init.d/xrdp start
sudo passwd [username]

sudo reboot

# xrdp μƒνƒœ 확인
service xrdp status

# 였λ₯˜μ‹œ 둜그 확인
tail -f /var/log/syslog

# xrdp 였λ₯˜ ν•΄κ²°
sudo vi /etc/xrdp/startwm.sh

----
unset DBUS_SESSION_BUS_ADDRESS
unset XDG_RUNTIME_DIR
----

sudo systemctl restart xrdp

echo "xfce4-session" > ~/.xsession
cat ~/.xsession # 정상변경여뢀 확인

# ubuntu is not in the sudoers file.  This incident will be reported
sudo bash
chattr -i /etc/sudoers
chmod u+w /etc/sudoers

vi /etc/sudoers
---
ubuntu ALL=(ALL:ALL) ALL
---
# # Starting xrdp (via systemctl): xrdp.service Failed to connect to bus: Connection refused
# # https://superuser.com/questions/1628546/wsl2-run-xrdp-service-from-windows
# # https://askubuntu.com/questions/234856/unable-to-do-remote-desktop-using-xrdp
# wsl bash -c "sudo service xrdp start |cat"
# wsl sudo "/etc/init.d/xrdp start"
# sudo /etc/init.d/xrdp start

# # xrdp error
# # echo xfce4-session > ~/.xsession
# sudo update-alternatives --config x-session-manager

# novnc

lsb_release -cd  ; getconf LONG_BIT ; hostname ; hostname -I

# https://www.youtube.com/watch?v=BWe2bnL0Nl8
Offcial Wesbite :https://novnc.com/info.html GitHub -https://github.com/novnc/noVNC
#
sudo apt install xfce4 xfce4-goodies tightvncserver novnc websockify python3-numpy build-essential net-tools curl git software-properties-common -y
vncserver
vncserver -kill :1
mv ~/.vnc/xstartup ~/.vnc/xstartup.bak
vim ~/.vnc/xstartup
----
#!/bin/bash
xrdb $HOME/.Xresources
startxfce4 &
---
chmod +x ~/.vnc/xstartup
vncserver
vncpasswd  [ StrongPassword ]

sudo adduser ubuntu
echo ubuntu ALL=\(root\) NOPASSWD:ALL > /etc/sudoers.d/ubuntu \
    && chmod 0440 /etc/sudoers.d/ubuntu

cd /etc/ssl ; openssl req -x509 -nodes -newkey rsa:2048 -keyout novnc.pem -out novnc.pem -days 365
chmod 644 novnc.pem
websockify -D --web=/usr/share/novnc/ --cert=/etc/ssl/novnc.pem 6080 localhost:5901
https://localhost:6080/vnc.html

# ubuntu korean

# https://shanepark.tistory.com/231
# ν•œκΈ€ μ–Έμ–΄ 팩
sudo apt-get install -y language-pack-ko

#Locale μ„€μΉ˜
sudo locale-gen ko_KR.EUC-KR

#LANG μ„€μ • μ—…λ°μ΄νŠΈ
sudo update-locale LANG=ko_KR.UTF-8 LC_MESSAGES=POSIX

#ν•œκΈ€ μž…λ ₯κΈ° ibus μ„€μΉ˜
sudo apt-get install -y ibus-hangul

# ν•œκΈ€ 폰트 μ„€μΉ˜ #λ‚˜λˆ” κΈ€κΌ΄ μ„€μΉ˜
sudo apt-get install -y fonts-nanum\*

#μœˆλ„μš°μ— μ μ‘λœ μΈκ°„μ΄λ―€λ‘œ, 파일 κ΄€λ¦¬νˆ΄ MC 도 μ„€μΉ˜
apt-get install mc

2 fcitx μ„€μΉ˜μ‹œμž‘

#μ„€μΉ˜
sudo apt install fcitx fcitx-hangul fonts-noto-cjk dbus-x11

#μž…λ ₯κΈ° μ„€μ • -> fictx 선택 #첨뢀 μ΄λ―Έμ§€λŠ” 이미 ν•œκΈ€ 섀정이 λ˜μ–΄, ν•œκΈ€λ‘œ 좜λ ₯ 쀑
im-config

#fcitx.sh μΆ”κ°€
sudo vim /etc/profile.d/fcitx.sh

#!/bin/bash
export QT_IM_MODULE=fcitx
export GTK_IM_MODULE=fcitx
export XMODIFIERS=@im=fcitx
export DefaultIMModule=fcitx

#optional
fcitx-autostart &>/dev/null

#μ•„λž˜ λͺ…λ Ήμ–΄ μ‹€ν–‰ν•΄μ„œ ν•œκΈ€ μž…λ ₯κΈ° μΆ”κ°€ λ˜μ–΄ μžˆλŠ” μ§€ 확인
fcitx-config-gtk3

# wine

# https://itlearningcenter.tistory.com/entry/【Ubuntu-2004-LTSγ€‘μΉ΄μΉ΄μ˜€ν†‘-μ„€μΉ˜
# sed -i 's#mirror.yuki.net.uk#ports.ubuntu.com#g' /etc/apt/sources.list;

sudo dpkg --add-architecture i386
sudo apt install -y wget

sudo mkdir -pm755 /etc/apt/keyrings
sudo wget -O /etc/apt/keyrings/winehq-archive.key https://dl.winehq.org/wine-builds/winehq.key

sudo wget -NP /etc/apt/sources.list.d/ https://dl.winehq.org/wine-builds/ubuntu/dists/jammy/winehq-jammy.sources

sudo apt-get update
sudo apt install -y --install-recommends winehq-stable
winecfg

# google cloud ubuntu 20.04

sudo apt update
sudo apt upgrade
# sudo apt install -y ubuntu-desktop
# sudo apt install slim
# sudo reboot
# sudo service slim start
# sudo cp /etc/xrdp/xrdp.ini /etc/xrdp/xrdp.ini.bak
# sudo apt-get install xrdp
# sudo cp /etc/xrdp/xrdp.ini /etc/xrdp/xrdp.ini.bak
# sudo sed -i 's/3389/3389/g' /etc/xrdp/xrdp.ini
# sudo sed -i 's/max_bpp=32/#max_bpp=32nmax_bpp=128/g' /etc/xrdp/xrdp.ini
# sudo sed -i 's/xserverbpp=24/#xserverbpp=24nxserverbpp=128/g' /etc/xrdp/xrdp.ini
# sudo /etc/init.d/xrdp start
sudo passwd oseongryu
sudo passwd ubuntu
sudo passwd root
sudo apt install net-tools
netstat -tnlp

# ubuntu chrome-remote-desktop

# https://medium.com/@selvamraju007/install-and-launch-ubuntu-22-04-desktop-on-google-cloud-1fba8c0f9585
wget https://dl.google.com/linux/direct/chrome-remote-desktop_current_amd64.deb
sudo apt-get install --assume-yes ./chrome-remote-desktop_current_amd64.deb
sudo apt update && sudo apt upgrade
sudo apt install slim
sudo apt install ubuntu-desktop
sudo reboot
sudo service slim start

sudo passwd

# 3389 μ„€μ •
# sudo apt update
# sudo apt install xrdp -y

# sudo systemctl status xrdp

# sudo nano /etc/xrdp/xrdp.ini
# port=49952
# sudo systemctl restart xrdp

# sudo ufw status
# sudo ufw enable
# sudo ufw allow 49952/tcp
# sudo ufw reload

# ubuntu scp

scp -P 22 ~/.ssh/id_rsa gcp-root:/home/oseongryu/.ssh
scp -P 22 ~/.ssh/id_rsa.pub gcp-root:/home/oseongryu/.ssh
scp -P 22 ~/.ssh/drawing-app.war gcp-root:/home/oseongryu/.ssh
nohup java -jar /home/oseongryu/.ssh/drawing-app.war 1>/dev/null 2>&1

# ubuntu python setting

sudo apt-get update
sudo apt-get upgrade python3

sudo apt install python3-pip

sudo apt install python3-tk python3-dev
pip install selenium
pip install webdriver_manager
pip install pyautogui
# error The confidence keyword argument is only available if OpenCV is installed
pip install opencv-python

pip install -r requirements.txt

# https://stackoverflow.com/questions/73830524/attributeerror-module-lib-has-no-attribute-x509-v-flag-cb-issuer-check
sudo apt remove python3-pip
wget https://bootstrap.pypa.io/get-pip.py
sudo python3 get-pip.py
sudo reboot
pip install pyopenssl --upgrade

pip install python-xlib
sudo apt install python-tk

# ubuntu cliμ—μ„œ pyautogui μ‚¬μš©λ°©λ²•
# https://linuxhint.com/install-xvfb-ubuntu/
sudo apt install xvfb
sudo apt install scrot

sudo apt-get install fonts-indic
sudo apt-get install font-noto
sudo apt-get install fonts-noto-cjk

sudo timedatectl set-timezone Asia/Seoul

# ubuntu java gradle setting

sudo apt-get install openjdk-8-jdk
chmod +x gradlew
./gradlew bootWar

# ubuntu setting

# GUI
Ctrl + h

# chrome, chromium

# amd 64
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
sudo apt install ./google-chrome-stable_current_amd64.deb
/usr/bin/google-chrome-stable

# arm
sudo apt install chromium-browser

# chromium browser μ‹€ν–‰μ•ˆλ κ²½μš° (no-sandbox μ˜΅μ…˜μΆ”κ°€)
# https://answers.launchpad.net/ubuntu/+question/707831
vi /usr/bin/chromium-browser

---
exec /snap/bin/chromium "$@"
exec /snap/bin/chromium --no-sandbox "$@"
----

# old
vi /usr/share/applications/chromium-browser.desktop
# new
vi /var/lib/snapd/desktop/applications/chromium_chromium.desktop

---
Exec=env BAMF_DESKTOP_FILE_HINT=/var/lib/snapd/desktop/applications/chromium_chromium.desktop /snap/bin/chromium %U
Exec=env BAMF_DESKTOP_FILE_HINT=/var/lib/snapd/desktop/applications/chromium_chromium.desktop /snap/bin/chromium %U --no-sandbox
--service-sandbox-type=none
--service-sandbox-type=utility
---


# chrome update

cat /etc/apt/sources.list.d/google-chrome.list
# ### THIS FILE IS AUTOMATICALLY CONFIGURED ###
# # You may comment out this entry, but any other modifications may be lost.
# deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main

# ubuntu vscode (amd64)

sudo snap install --classic code
code --version

# sudo apt update
# wget -q https://packages.microsoft.com/keys/microsoft.asc -O- | sudo apt-key add -
# sudo add-apt-repository "deb [arch=amd64] https://packages.microsoft.com/repos/vscode stable main"
# sudo apt install code


# https://code-designer.tistory.com/8
# https://code.visualstudio.com/

# cd Downloads
# sudo apt install ./code_1.84.2-1699528352_amd64.deb

# sudo apt remove code

# ubuntu vscode (arm)

# linux
# https://rottk.tistory.com/entry/VSCode-%EC%84%A4%EC%B9%98%EB%90%9C-VSCode-Portable-%EB%B2%84%EC%A0%84%EC%9C%BC%EB%A1%9C-%EC%A0%84%ED%99%98%ED%95%98%EA%B8%B0
cd ~
wget https://update.code.visualstudio.com/1.56.2/linux-x64/stable -O code-stable-x64-1620838810.tar.gz

tar -xvf code-stable-x64-1620838810.tar.gz
rm code-stable-x64-1620838810.tar.gz

# vscode  portable mode
cd VSCode-linux-x64
mkdir data

# μ‚¬μš©μž μ„€μ • νŒŒμΌμ„ λ³΅μ‚¬ν•©λ‹ˆλ‹€.
sudo cp ~/.config/Code ./data -r
mv data/Code ./data/user-data

# μ„€μΉ˜ν–ˆλ˜ ν™•μž₯νŒ©μ„ λ³΅μ‚¬ν•©λ‹ˆλ‹€.
sudo cp ~/.vscode/extensions/ ./data -r

# μƒμ„±ν•œ ν΄λ”μ˜ μ‚¬μš©κΆŒν•œμ„ λΆ€μ—¬ν•©λ‹ˆλ‹€.
sudo chmod o+wx data
sudo chown -R osryu:google-sudoers data

# # μ‚¬μš©μž ν™˜κ²½ 폴더
# Windows %APPDATA%\Code
# macOS $HOME/Library/Application Support/Code
# Linux $HOME/.config/Code
# # ν™•μž₯팩이 μ„€μΉ˜λœ ν΄λ”μ˜ μœ„μΉ˜λŠ” λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.
# Windows %USERPROFILE%\.vscode\extensions
# macOS ~/.vscode/extensions
# Linux ~/.vscode/extensions

# ubuntu docker

# https://stackoverflow.com/questions/40658095/how-to-open-ubuntu-gui-inside-a-docker-image
# https://shanepark.tistory.com/237

sudo apt-get install ca-certificates curl gnupg lsb-release

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

echo \
 "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
 $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

sudo apt update
sudo apt-get install docker-ce docker-ce-cli containerd.io

# ubuntu docker-compose

# windows
# https://docs.docker.com/compose/install/standalone/
Start-BitsTransfer -Source "https://github.com/docker/compose/releases/download/v2.26.1/docker-compose-windows-x86_64.exe" -Destination $Env:ProgramFiles\Docker\docker-compose.exe

# wsl ubuntu
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo apt install -y docker-compose
sudo chmod +x /usr/local/bin/docker-compose
docker-compose --version

# customize dock panel

sudo apt install dconf-editor

# https://linuxconfig.org/how-to-customize-dock-panel-on-ubuntu-20-04-focal-fossa-linux
gsettings set org.gnome.shell.extensions.dash-to-dock extend-height false
gsettings set org.gnome.shell.extensions.dash-to-dock dock-position BOTTOM
gsettings set org.gnome.shell.extensions.dash-to-dock transparency-mode FIXED
gsettings set org.gnome.shell.extensions.dash-to-dock dash-max-icon-size 64
gsettings set org.gnome.shell.extensions.dash-to-dock unity-backlit-items true

# ubuntu in mac

docker pull ubuntu:20.04
docker run -it -p 8089:8089 --privileged --restart=always --name my-ubuntu ubuntu:20.04
docker run -it -p 8081:8089 --platform linux/amd64 --privileged --restart=always --name my-ubuntu ubuntu:20.04
docker run -it -p 8082:8089 --privileged --restart=always --name my-ubuntu2 ubuntu:20.04

docker exec -it my-ubuntu bash

sudo docker cp /Users/oseongryu/.ssh/id_rsa my-ubuntu:/root/.ssh/
sudo docker cp /Users/oseongryu/.ssh/id_rsa.pub my-ubuntu:/root/.ssh/

apt install chromium-browser
apt-get install chromium-chromedriver
apt-get update
apt-get upgrade -y
apt-get install build-essential gdb
apt install chromium-shell
snap install chromium

systemctl unmask snapd.service
systemctl enable snapd.service
systemctl start snapd.service
/usr/lib/snapd/snapd &

apt-get update

apt-get upgrade python3
apt install python3-pip
apt install python3-tk python3-dev
pip install selenium
pip install webdriver_manager
pip install pyautogui
pip install opencv-python
apt remove python3-pip
wget https://bootstrap.pypa.io/get-pip.py
python3 get-pip.py
reboot
pip install pyopenssl --upgrade
pip install python-xlib

# https://codetryout.com/google-chrome-following-packages-have-unmet-dependencies/
apt install wget
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
apt install ./google-chrome-stable_current_amd64.deb


apt install python-tk
apt install xvfb
apt install scrot

python3 /root/git/python-selenium/selenium/service.py 0

# ssl (with springboot)

# https://velog.io/@jiwon615/Spring-Boot%EC%97%90-Lets-Encrypt-SSL-%EC%A0%81%EC%9A%A9%EA%B8%B0
sudo apt-get install certbot
sudo certbot certonly --standalone
sudo certbot certonly --standalone --register-unsafely-without-email

# /etc/letsencrypt/live/도메인/ (fullchain.pem, privkey.pen)

sudo openssl pkcs12 -export -in fullchain.pem -inkey privkey.pem -out keystore.p12 -name ttp -CAfile chain.pem -caname root

# # 배포 ν›„ root κΆŒν•œμœΌλ‘œ μ‹€ν–‰ν•˜λŠ”κ²Œ μ•„λ‹ˆλ©΄ RFC κ·œμ•½μ— μ˜ν•˜μ—¬ 1024미만 ν¬νŠΈλŠ” root만 κ°€λŠ₯ν•˜λ―€λ‘œ λ¦¬λ‹€μ΄λ ‰μ…˜μ²˜λ¦¬ (nginx μ„€μΉ˜ν›„ λ¦¬λ‹€μ΄λ ‰νŠΈλ₯Ό μ§„ν–‰ν•˜λŠ” 방식 μΆ”μ²œ)
# sudo iptables -t nat -A PREROUTING -p tcp --dport 443 -j REDIRECT --to-port 8089

# # λͺ©λ‘
# sudo iptables -t nat -L PREROUTING --line-numbers
# # iptables μ‚­μ œ 번호
# sudo iptables -t nat -D PREROUTING 3


# μΈμ¦μ„œ μžλ™κ°±μ‹ 
# Crontab 보기
sudo crontab -l
# Crontab νŽΈμ§‘
sudo crontab -e
0 2 1 * * /usr/bin/certbot renew

sudo certbot certificates
# μž¬κ°±μ‹ ν…ŒμŠ€νŠΈ
sudo certbot renew --dry-run
# μž¬κ°±μ‹ μ§„ν–‰
sudo certbot renew

# ssl (with nginx)

# https://velog.io/@gudcks0305/%EC%9A%B0%EB%B6%84%ED%88%AC%EC%97%90%EC%84%9C-Nginx%EB%A1%9C-Reverse-Proxy-%EC%84%A4%EC%A0%95%ED%95%98%EA%B8%B0
upstream backend {
    server 127.0.0.1:8089;
}

# server {
#     listen 80;
#     server_name dnsname.co.kr;
#     location / {
#         proxy_pass http://backend/;
#     }
# }

server {
    listen 80;
    server_name dnsname.co.kr;
    if ($host = dnsname.co.kr) {
        return 301 https://$host$request_uri;
    }
    return 404;
}

server {
    listen 443 ssl;
    server_name dnsname.co.kr;
    ssl on;
    ssl_certificate /etc/letsencrypt/live/dnsname.co.kr/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/dnsname.co.kr/privkey.pem;
    location / {
        proxy_pass http://backend/;
        proxy_set_header HOST $http_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_redirect off;
        charset utf-8;
    }
}

# temp

# apt install slim
# cat /etc/X11/default-display-manager
# apt install lightdm
# apt install ubuntu-desktop
# reboot
# # delete GUI diplay manager
# apt remove slim lxde
# # λΆˆν•„μš”ν•œ μ’…μ†μ„±μ œμ™Έ
# apt autoremove
# service slim start
# /etc/init.d/xrdp stop
# /etc/init.d/xrdp start

# [error] authentication is required to create a color managed device

# https://jkim83.tistory.com/142
sudo vi /etc/polkit-1/localauthority/50-local.d/color.pkla
[Allow colord for all users]
Identity=unix-user:*
Action=org.freedesktop.color-manager.create-device;org.freedesktop.color-manager.create-profile;org.freedesktop.color-manager.delete-device;org.freedesktop.color-manager.delete-profile;org.freedesktop.color-manager.modify-device;org.freedesktop.color-manager.modify-profile
ResultAny=yes
ResultInactive=yes
ResultActive=yes

# magnet (ubuntu GUI)

sudo apt-get install comizconfig-settings-manager
Last Updated: 4/13/2025, 11:14:44 PM